git merge conflict due to renaming in two branches - how to fix & avoid in future?
我有两个本地分支机构
1 2 3 | projectBeta project project_v1 |
我只想保留
1 2 | 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 |
号
所以看起来Git在不同的分支中以不同的方式跟踪重命名。
如果我做一个
1 2 3 4 5 6 7 | # 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") |
我不明白的第一件事是,当合并报告说它被我们和他们都重命名和删除时,为什么状态只是说它是"由我们添加的"?
其次,我想使用test.c的dev分支版本(它们),但是现在当我尝试
1 | git co --theirs project/test.c |
。
我得到
1 | error: path 'project/test.c' does not have their version |
…所以我不知道如何确保合并将使用来自dev分支的内容?
最后,是否有一种最佳实践方法来避免将来出现这样的混乱局面?基本上,在内容尚未准备好首先合并的分支中独立地更改文件夹结构…
你需要的是Git MV和吉特令吉
我猜你可能会在不让Git知道的情况下修改目录。你必须让Git知道,因为它跟踪所有文件夹,需要知道如何正确处理它们。
你应该做的是:
1 2 3 | git rm -r project git rm -r project_v1 git mv projectBeta project |
试试这个
1 | git pull |
号
转到文件夹删除Project和Project,将ProjectBeta重命名为Project。
1 2 3 | git add --all git commit git push |
你对其他部门也一样