I have two local branches master
and dev
. Both branches contained three folders:
projectBeta
project
project_v1
I wanted to just keep projectBeta
and remove project
and project_v1
and then rename projectBeta
as project
. So that's what I did separately on both branches, committing as I went along. All looked good until I tried to then merge the dev
branch to master, and I got a pile of these kinds of errors:
CONFLICT (rename/delete): Rename projectBeta/test.c->project/test.c in dev and deleted in HEAD
CONFLICT (rename/delete): Rename project_v1/test.c->project/test.c in HEAD and deleted in dev
So it looks like Git tracked the renames in different ways in the different branches.
If I do a git status
, I get
# On branch master
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# added by us: project/test.c
#
no changes added to commit (use "git add" and/or "git commit -a")
First thing I don't understand is why the status just says that it's "added by us" when the merge report says it's renamed and deleted by both us and them?
Secondly, I want to use the dev branch version (them) of test.c, but now when I try
git co --theirs project/test.c
I get
error: path 'project/test.c' does not have their version
...so I don't know how to ensure the merge will use the content from the dev branch?
Finally, is there a best-practice way to avoid such a mess like this in the future? Basically, changing folder structures independently in branches where the content is not ready to merge first...