Resolving a 'both added' merge conflict in git?
I sometimes find it confusing using the --theirs
and --ours
options to identify where the file will come from. Most of the time mine will be in the branch I am rebasing which is referred to by --theirs
!
You can also use git checkout <tree-ish> -- src/MyFile.cs
Where the <tree-ish>
can be replaced either by the branch name or commit-id that contains the file you wish to keep.
git checkout 6a363d8 -- src/MyFile.cs
git checkout my_branch -- src/MyFile.cs
git checkout HEAD -- src/MyFile.cs
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.
When doing ...
git checkout --ours someFile
It may seem like it didn't do anything when doing git status.
Just Remember to do this afterwards.
git add someFile
git status