Sub*_*ubG 13 git merge merge-conflict-resolution
我有两个地方分支机构master和dev.两个分支包含三个文件夹:
projectBeta
project
project_v1
Run Code Online (Sandbox Code Playgroud)
我想只保留projectBeta和删除project,并project_v1然后重命名projectBeta为project.这就是我在两个分支上单独做的事情,随着我的进展而做出承诺.一切都看起来很好,直到我试图将dev分支合并到主人,我得到了一堆这样的错误:
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
Run Code Online (Sandbox Code Playgroud)
所以看起来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")
Run Code Online (Sandbox Code Playgroud)
我不明白的第一件事是,当合并报告说它被我们和他们重命名和删除时,状态只是说它是"我们添加的"?
其次,我想使用test.c的dev分支版本(它们),但现在我尝试了
git co --theirs project/test.c
Run Code Online (Sandbox Code Playgroud)
我明白了
error: path 'project/test.c' does not have their version
Run Code Online (Sandbox Code Playgroud)
...所以我不知道如何确保合并将使用dev分支的内容?
最后,是否有一种最佳实践方法可以避免将来出现如此混乱?基本上,在内容尚未准备合并的分支中独立更改文件夹结构...
小智 2
我的猜测是你可能在不让 git 知道的情况下管理了目录。您必须让 git 知道,因为它会跟踪所有文件夹并需要知道如何正确处理它们。
你应该做的是:
git rm -r project
git rm -r project_v1
git mv projectBeta project
Run Code Online (Sandbox Code Playgroud)