从 master 中删除文件时如何解决 rebase 冲突?
How to resolve a rebase conflict when file was removed from master?
从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
。
从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
。