When merging branches, the most direct way we can use is to git merge. However, with git-merge, the commit history and graph will be messy if there are a lot of branches.

We can also use git rebase to merge branches to make the commit history cleaner. Suppose we have a feat branch and master branch, and they share a common base commit.

               \---E---F (feat)

To merge the two branches using git-rebase, run the following command:

git checkout feat
git rebase -i master

Note that after running the above step, we may get merge conflict. We need to fix the conflict, then use git add some_file to mark that conflict for some_file has been resolved. Use git rebase --continue to fix conflict in other files, or finish the rebasing process (when there is no conflict anymore).

After the above step, we have the following commit graph:


In order to move master to tip of the commit, we can run the following command:

git checkout master
git merge --ff feat

The -ff option for git-merge will ascend the master to the same commit as the feat branch.


To delete the feat branch, run the following command:

git branch -d feat

Now, you have succeed in merging the two branches using git rebasing.