Merge conflict : each conflict appears twice

Using Sourcetree for Windows 1.6.12

I'm just working through my first merge.  I had a number of conflicts, with each conflicted file showing up twice, like the following image.  One checked, the other unchecked.

Capture1.JPG

Question #1:  What does this mean?  Why does each conflict show up twice?  I clicked on each one and they both seemed the same.

So next I edited the conflicting files to resolve the conflicts, and saved each file.  I was thinking maybe the "conflict" icon would change to something else, but it didn't.   Not sure what to do next, I selected Resolve Conflict / Mark Resolved.  That changed to the following:

Capture2.JPG

Still duplicated, one checked, and the other unchecked.

Now I'm ready to commit, but still concerned about every file showing up twice?  Is it safe to commit in this situation?  Should I uncheck one of each of the files?

Thanks,

Russ Dirks

 

Edit: insert better images.

4 answers

For whatever reason, when there is a conflict, the file in question shows up as both staged and unstaged (presumably portions have been staged, and others have not).

You should NOT use the "Mark Resolved" option unless you have opened the file in your typical editor and manually fixed the conflicts, otherwise you will commit the file with all of the extra conflict markup. 

If resolving merge conflicts is new territory for you, I'd recommend spending some time with google, and maybe find a good merge tool for your OS if you don't like the idea of resolving merges by hand.

Any chance that your files are read-only or locked for some reason?

No, that doesn't seem to be the case.

Well, I did a bunch of experiments with a test repo, with the command line open as well, running 'git status', and I have discovered the following points.  Keep in mind I'm still fairly new to using git.

  • Displaying the files twice seems to be Sourcetree's way of indicating there was a merge conflict. If you run 'git status` on the command line, you'll see "both added" for that file, which is just your standard merge conflict.

  • Using Mark Resolved is equivalent to 'git add' for that file.  It basically stages the file. This will change the display from two yellow exclamation points to one orange '...' icon. 
  • You can achieve the same thing by simply clicking the unchecked item of the pair of files.
  • The previous point only holds true if you have the UI view set to Fluid Staging or Split Staging View.  If you have it set to No Staging, clicking the unchecked item of the pair of files does nothing.  The Marked Resolved command still works, though.

My personal opinion is that representing merge conflicts by displaying the file twice, one staged and the other not, is overkill.  It is just confusing.  One instance of the file, with a yellow exclamation icon, would be just fine.  It should initially show up un-staged.  When you've resolved it, you just click on it to add it to the staging area, and then commit. 

So Seth was right above, this is the standard merge conflict case. The reason for the file being there twice is that you can stage hunks in a file, so the non-conflicting parts are staged and the conflicting ones are not (until you resolve the conflict). If you can create a merge conflict where the whole file is in a conflicted state (e.g. one-liner with the line changed), it will not show up twice. This is a feature, not a bug.

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published May 30, 2018 in Sourcetree

Tip from the team: configuring Git or Mercurial in Sourcetree

Supported Platforms macOS Windows To make using Sourcetree as simple yet powerful as possible we embed (bundle) dependencies such as Git, Git LFS, and Mercurial. We strive to keep these...

548 views 1 2
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you