Loading...

Git Tutorial

Resolving Conflicts in git

Lets learn to resolve merging conflicts

Step1: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: kwikl3arn ([email protected]) -->
<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.


Step2: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: kwikl3arn([email protected]) -->
<html>
  <head>
    <link type="text/css" rel="stylesheet" media="all" href="style.css" />
  </head>
  <body>
    <h1>Hello, World! Life is great!</h1>
  </body>
</html>

Step3: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.

Step4:Advanced Merging

Git has no graphical merging tools, but it will accept any third-party merge tool (read more about such tools on StackOverflow.)