Git conflict markers

Mellon picture Mellon · Oct 26, 2011 · Viewed 176k times · Source

After I pulled from remote branch, I got conflict, when I open the file it looks something like below:

<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt

I need some explanations of the markers, which portion of code is pulled from remote and which is from local?

What does the code 77976da35a11db4580b80ae27e8d65caf5208086 stand for?

Answer

Mark Longair picture Mark Longair · Oct 26, 2011

The line (or lines) between the lines beginning <<<<<<< and ====== here:

<<<<<<< HEAD:file.txt
Hello world
=======

... is what you already had locally - you can tell because HEAD points to your current branch or commit. The line (or lines) between the lines beginning ======= and >>>>>>>:

=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt

... is what was introduced by the other (pulled) commit, in this case 77976da35a11. That is the object name (or "hash", "SHA1sum", etc.) of the commit that was merged into HEAD. All objects in git, whether they're commits (version), blobs (files), trees (directories) or tags have such an object name, which identifies them uniquely based on their content.