从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
无论您以哪种方式离开文件,它都将在正在生成的新提交中使用。
这是怎么回事:
- 由于冲突,变基被中断。
- 如果您检查日志,您当前的 HEAD 是
master
的头部。 - 您有一个在此 HEAD 中不存在的文件。这意味着您不能询问
git rm
因为该文件不受版本控制。 - 我们只是删除该文件,就好像您删除不想提交的新文件一样。
如果当前提交中的唯一更改是在此已删除的文件上,您将收到此错误:
`No changes - did you forget to use 'git add'?`
这是因为没有什么可提交的(您刚刚删除了一个 git 中不存在的文件(在这种情况下,您可以git rebase --skip
而不是--continue
.