Git 冲突"both deleted"



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

如果:

  • 旧标准是基础
  • 新标准是主干上的最后一个提交
  • OldCustom是我们尝试合并回master的分支(来自OldStandard的分支(

为什么与标记为"都已删除"的某些文件发生冲突?

我理解"两者都已添加"的冲突,当一个文件添加到NewStandard中,而另一个版本的文件添加到OldCustom中时。

但是,对于删除,如果文件已在NewStandard中删除,并且在OldCustom中删除,则有什么问题? 这是一个等效的状态,不是吗?

如本回答中所述(建议作为重复项(:

branchAgit mv oldfile newstandard提交,而branchBgit mv oldfile newcustom提交时,你可以看到"两者都已删除"。

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

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

像任何冲突一样,最终选择权掌握在你手中:

git只是强调这样一个事实,在您的最终代码版本中,newcustomnewstandard生活在一起的事实可能存在问题,也许这可能与两者都是通过oldfile的副本创建的事实有关。

您可以手动修复:

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

最新更新