Learning How to Git: Merging Branches and Resolving Conflict
In some previous stories, we have talked about branches. So, let’s say we already working with a lot of developers and have a lot of branches. If we only use those branches just the way they are we are going to see multiple branches with different states. So, what if we want to combine those files and differences? We can use the merge command.
The above visualization describes merging branches in Git. In the left figure, there are two branches named:
feature. Then let’s say we want to merge the commits from
master. After the merging operation, we are going to have the commits from
feature available in the
master branch. To understand it better, let’s try it by our self.
Checking our Branches
- Note: I have add a new commit in the master branch
To check the log of our commits from all branches, we can use a bit more complicated command. The command we are going to use
git log --oneline --all --graph --decorate. I don’t remember each parameter function, but that’s the prettiest git log command and only showing only the important information. Let’s try to run it.
We can see that there are two ‘branches’ in above picture. The first one is the
master branch (the branch on the left), the second one is the
dev branch (the branch on the right). We can see that there are two commits that are not synced yet in those branches. Since the one that being released to the public is master, so let’s merge the commit from
dev back to
The Actual Merging
Finally, we are going to actually merge it. Keep in mind that if we want to merge two branches, we have to be in the destination branch. So if we want to merge
master, we need to be in the
master branch. If you want to know on which branch are you, you can use
git status. Then the only thing run is the
git merge <name-of-branch>. So, because we want to merge the
dev branch, we are going to execute
git merge dev.
Bonus: Resolving Conflict
Sometimes, when we try to merge two branches we are going to face a git conflict. Conflict is the state where certain line(s) in a certain file have different changes in the commits in different branch and git can’t decide which one is the right changes (also if both changes are correct and used). So, we are going to check the file that has the conflicted copy which in this case
Most probably your conflicted file(s) will have marks such as the above picture. The marks divide the file state between the destination branch and the branch that being merged to. In this case, the
HEAD one will be the destination branch which is the
master branch, where the other part will be the
dev branch as indicated at the end of the mark.
To resolve the conflict, all we need to do is to edit as we need it. So, the one that resolving the conflict should know which line of code to keep and which line of code to discard. In my example, we will take all of the code (nothing discarded).
After we’ve done with resolving the conflict, run a
git commit once and we can commit the merge process as what we called the merge commit.
We’re done! If then we check the log of the git, we will see that it is merged once again,
Today, we have talked about merging branches in Git. Actually, from all of previous stories up until this story you already can collaborate and work with Git with your team or partners. For future stories there will be more advanced git usages. Hopefully, it may help you start working with Git and thanks for reading.
Merging is Git's way of putting a forked history back together. git merge lets you take independent lines of…www.atlassian.com
Translations started for Azərbaycan dili, Беларуская, Català, Esperanto, Español (Nicaragua), فارسی, हिन्दी, Magyar…git-scm.com