Git冲突"已删除"

时间:2017-07-03 09:47:50

标签: git merge conflict delete-file

我不明白为什么"都被删除"是未合并路径的状态。

如果:

  • OldStandard是基础
  • NewStandard是主干上的最后一次提交
  • OldCustom是分支(来自OldStandard的分支)我们尝试合并回主人

为什么与标记为&#34的某些文件存在冲突;两者都被删除"?

我理解"在NewStandard中添加了一个文件时添加了#34;以及在OldCustom中添加了另一个版本的文件。

但是,对于删除,如果文件已在NewStandard中删除,并且在OldCustom中也被删除了,问题是什么?这是一个等同的国家,不是吗?

1 个答案:

答案 0 :(得分:5)

我找到了答案here(我建议重复一次):

显然,当branchA提交git mv oldfile newstandard时,您可以看到“已删除”,branchB提交git mv oldfile newcustom

在这种情况下,尝试将customBranch合并到standardBranch时,git会报告三个文件的冲突:

both deleted:  oldfile
added by them: newcustom
added by us:   newstandard

与任何冲突一样,最终的选择权在你手中:

git只是强调可能这一事实可能会导致newcustomnewstandard在您的最终代码版本中共存, 也许这可能与两者都是oldfile的副本创建的事实有关。

您可以手动修复:

  • 如果删除oldfile是预期结果:git reset oldfile && git rm oldfile
  • 如果保持newstandard是预期结果,请删除另一个:git reset newcustom && git rm newcustom
  • 如果应合并newstandardnewcustom的某些部分:手动编辑它们,或使用3向合并工具:meld newstandard newstandard newcustom
  • 等...