How to merge Git branches together

A Git branch can be split to try out changes. Different branches can be merged back together using the Git Merge command afterwards. Git distinguishes between fast-forward merge and three-way merge.

Cheap domain names – buy yours now
  • Free website protection with SSL Wildcard included
  • Free private registration for greater privacy
  • Free 2 GB email account

What is Git Merge?

Git offers a lot of freedom when working on a project. You may be solely responsible for development or you may be working in a large team focussing on different aspects of a project. Git Branches allow you to work on problem solving while trying out completely new approaches. Even if something goes wrong, your work on the Git Branch will not affect the Main Branch initially. You create the independent development line with the Git command Git Branch and switch between each fork with Git Checkout.

You can use Git Merge to merge the individual lines again after you have completed your work. Git Merge merges two branches back into one and applies the changes. Individual development lines are integrated back into the main branch in most cases.

What is the Git Merge syntax?

Git offers two ways to carry out a Git merge; a fast-forward merge and a three-way merge. We’ll show you how these two approaches differ in a later section of the article. However, the basic syntax of Git Merge for branches is always the same and looks like this:

git merge <branch></branch>

The branch specified under `<branch>´ is integrated into the current branch.

How do I combine Git branches?

The fast-forward merge is the simplest way to combine two Git branches. A three-way merge can be performed if this isn’t possible.

Fast-Forward-Merge

A fast-forward merge is performed when there is a linear connection between the current Git branch and the target branch. For example, imagine a work step where a Git branch is created and is being worked on a while the main branch remains unchanged. Git would see the operation as a continuation of the master and will merge the changes together into a commit. It looks like this:

git checkout master
git merge work branch
git branch -d work branch

Switch to the master branch to begin and perform a Git Merge with the `working branch´ secondary branch. This connects both branches and deletes the redundant secondary branch with the `git branch -d´ command.

Three-Way Merge

However, this type of a git merge is not possible if neither branch corresponds to the original branch. So, if you split off a secondary branch to work on it, and the main branch is also changed in the meantime, you will have to perform a three-way merge. The ‘three’ comes from the three commits: main branch, secondary branch, and the edited original branch. The following example illustrates a Git merge with three starting points:

git checkout -b new-feature-master
git add file
git commit -m "Sample changes to this project".
git add second-file
git commit -m "end of sample changes"
git checkout master
git add third-file
git commit -m "Changes made to the master".
git merge new feature
git branch -d new-feature

This example shows how changes were made to the master and fork, making it impossible to perform a fast-forward merge. This situation often arises when you are working on a project in a larger team.

Conflict Resolution for Git Merge

A common conflict can occur when trying to merge Git branches. If exactly the same part of a file has been changed in both branches, Git cannot determine which version should be used in final version. The process is stopped before the Git merge is performed in this case. You are then given the option to resolve the conflict manually. This is message you will receive:

CONFLICT (content): Merge conflict in <file></file>
Automatic merge failed; fix conflicts and then commit the result.

You can see exactly what files need to be changed using the Git Status command, which you know from your Git cheat sheet with PDF download. These are clearly shown to you as `unmerged´. Change the files as needed, run them with Git Add, and start a new Git commit. You also have the option to perform a merge for the affected Git Branches. You can then delete the Git Branches which you no longer need.

Tip

Take advantage of automated deployments! Bring your project online in just three steps using Git Push, Build and Deploy with Deploy Now from IONOS. You'll enjoy benefits like fast setup, streamlined workflows, and maximum scalability.

Was this article helpful?
Page top