如何解决从主文件中删除时的变基冲突?



master开始,A分支被分支。然后,几个提交(master(之后,B分支被分支。

A的所有者对文件fname进行了更改。B的所有者完全删除了fname

然后,B被重新定位并合并到master。现在,A将被重新定位和合并。但是现在A的所有者与文件fname发生了冲突,说:

CONFLICT (modify/delete): fname deleted in HEAD and modified in "commit msg". Version "commit msg" of fname left in tree.

通常,冲突是通过编辑中间文件,git add fname它,然后git rebase --continue该过程来解决的。

但是如何解决已删除文件的冲突?最终结果应该是删除文件。

在这种情况下,您可以不删除文件git rm,而只需使用rm.

rm fname
git add fname
#Fix any other conflict
git rebase --continue

无论您以哪种方式离开文件,它都将在正在生成的新提交中使用。


这是怎么回事:

  1. 由于冲突,变基被中断。
  2. 如果您检查日志,您当前的 HEAD 是master的头部。
  3. 您有一个在此 HEAD 中不存在的文件。这意味着您不能询问git rm因为该文件不受版本控制。
  4. 我们只是删除该文件,就好像您删除不想提交的新文件一样。

如果当前提交中的唯一更改是在此已删除的文件上,您将收到此错误:

`No changes - did you forget to use 'git add'?`

这是因为没有什么可提交的(您刚刚删除了一个 git 中不存在的文件(在这种情况下,您可以git rebase --skip而不是--continue.

最新更新