# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add/rm <file>..." as appropriate to mark resolution)
# both added: src/MyFile.cs
My question is, how do I resolve this? Must I use a merge tool or is there a way I can do it just from the commandline? If I git rm src/MyFile.cs
, how does git know which file version I want to remove and which I want to keep?
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.
–
–
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
–
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
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.