gitmergerebase

Resolving a 'both added' merge conflict in git?


I'm rebasing in git, and one conflict I get is 'both added' - that is, exactly the same filename has been added independently in my branch, and in the branch I'm rebasing on. git status tells me:

# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both added:         src/MyFile.cs

What are my options to resolve this either by a merge tool or from the commandline?

If I were to use git rm src/MyFile.cs, how would it know which file version I wanted to remove or keep?


Solution

  • If you use git rm git will remove all versions of that path from the index so your resolve action will leave you without either version.

    You can use git checkout --ours src/MyFile.cs to choose the version from the branch onto which you are rebasing or git checkout --theirs src/MyFile.cs to choose the version from the branch which you are rebasing.

    If you want a blend you need to use a merge tool or edit it manually.