我有两个本地分支 master
和 dev
。两个分支都包含三个文件夹:
projectBeta
project
project_v1
我只想保留 projectBeta
并删除 project
和 project_v1
然后将 projectBeta
重命名为 项目
。所以这就是我在两个分支上分别做的事情,在我进行的过程中做出 promise 。一切看起来都很好,直到我尝试将 dev
分支 merge 到 master,但我遇到了一堆这样的错误:
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 在不同的分支中以不同的方式跟踪重命名。
如果我执行 git status
,我会得到
# 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")
我不明白的第一件事是为什么当 merge 报告说它被我们和他们重命名和删除时,状态只说它是“我们添加的”?
其次,我想使用test.c的dev分支版本(他们),但是现在当我尝试
git co --theirs project/test.c
我明白了
error: path 'project/test.c' does not have their version
...所以我不知道如何确保 merge 将使用来自 dev 分支的内容?
最后,是否有最佳实践方法来避免将来出现这样的困惑局面?基本上,在内容尚未准备好首先 merge 的分支中独立更改文件夹结构...
最佳答案
我猜你可能在不让 git 知道的情况下 rm 目录。您必须让 git 知道,因为它会跟踪所有文件夹并需要知道如何正确处理它们。
你应该做的是:
git rm -r project
git rm -r project_v1
git mv projectBeta project
关于由于在两个分支中重命名导致 git merge 冲突 - 将来如何修复和避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264876/