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: Marina Pushkova (marina@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: Marina Pushkova (marina@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 will accept any third-party merge tool. See more about using Perforce merge tool with git here: http://onestepback.org/index.cgi/Tech/Git/UsingP4MergeWithGit.red

SVN?
© 2011-2014 Git How To. All rights reserved / Contact us