30. Resolving Conflicts
Goals
- To learn to resolve merging conflicts
01 Merge the master branch with style
Let us go back to the style branch and merge it with a new master branch.
Run:
git checkout style git merge master
Result:
$ git checkout style Switched to branch 'style' $ git merge master Auto-merging lib/hello.html CONFLICT (content): Merge conflict in lib/hello.html Automatic merge failed; fix conflicts and then commit the result.
If you open the lib/hello.html
you will see:
File: lib/hello.html
<!-- Author: Alexander Shvets (alex@githowto.com) --> <html> <head> <<<<<<< HEAD <link type="text/css" rel="stylesheet" media="all" href="style.css" /> ======= <!-- no style --> >>>>>>> master </head> <body> <h1>Hello,World! Life is great!</h1> </body> </html>
The first section is the version of the current branch (style) head. The second section is the version of master branch.
02 Resolution of the conflict
You need to resolve the conflict manually. Make changes to lib/hello.html
to achieve the following result.
File: lib/hello.html
<!-- Author: Alexander Shvets (alex@githowto.com) --> <html> <head> <link type="text/css" rel="stylesheet" media="all" href="style.css" /> </head> <body> <h1>Hello, World! Life is great!</h1> </body> </html>
03 Make a commit of conflict resolution
Run:
git add lib/hello.html git commit -m "Merged master fixed conflict."
Result:
$ git add lib/hello.html $ git commit -m "Merged master fixed conflict." Recorded resolution for 'lib/hello.html'. [style 645c4e6] Merged master fixed conflict.
04 Advanced Merging
Git has no graphical merging tools, but it will accept any third-party merge tool (read more about such tools on StackOverflow.)