git rebase --continue仍然看到冲突,git status告诉我没有

时间:2019-06-01 21:35:25

标签: git git-rebase

我正在运行一个相当复杂的基础,在最近的几次提交中进展顺利。我解决了一个很小的冲突,以某种方式陷入了困境–

    ╰─$ git status
rebase in progress; onto 99e642b
You are currently rebasing branch 'Vince_issue_157' on '99e642b'.
  (all conflicts fixed: run "git rebase --continue")

nothing to commit, working tree clean

    ╰─$ git rebase --continue Applying: RM debugger No changes - did you forget to use git add?

这两个不是矛盾吗?我怎么知道git不喜欢什么?


如果出现任何红色标记,则快速刷新日志

dc04ac4 (HEAD) HEAD@{0}: rebase: improve warning
f97482a HEAD@{1}: rebase: incomplete test for new warning
e73be23 HEAD@{2}: rebase: warning (that needs tweak) on default lang with no translation problem
99e642b (upstream/master, master) HEAD@{3}: rebase: checkout master
5d8b393 (origin/Vince_issue_157, Vince_issue_157) HEAD@{4}: checkout: moving from master to Vince_issue_157
99e642b (upstream/master, master) HEAD@{5}: reset: moving to upstream/master

2 个答案:

答案 0 :(得分:2)

快速回顾:Git尝试复制主题行为以下内容的现有提交时发生冲突:

RM debugger

也就是说,在git rebase期间,它通过将一系列提交复制到新的和经过改进的提交中进行工作,这些修改与原始完成的功能相同,但有所改进(例如,在不同的起始提交基础上) ),Git尝试复制该提交,并遇到一些合并冲突。因此,由于尚未应用RM debugger而停止了变基操作。

然后,您在索引和工作树中做了一些工作来解决这些冲突,包括最后的git add。然后您运行了git rebase --continue

此消息:

$ git rebase --continue
Applying: RM debugger
No changes - did you forget to use git add?

并不意味着存在冲突。这意味着现在索引中的源代码已经准备好作为RM debugger的新的和经过改进的副本提交,与现有提交中的源代码完全相同 { {1}}(dc04ac4),它本身是某些较早提交的副本,其主题已经是improve warning

Git不喜欢进行重复相同源代码的提交。 (Git称这些 empty commits ,尽管它们根本不是空的,但它们只是立即重复。)它是如此不喜欢,以至于improve warning在默认情况下根本拒绝这样做,包括解决所有冲突之后。

有时这表明您以错误的方式解决了冲突:您不小心放弃了更改。但是也许 是正确的选择。

如果此时正确的做法是完全 drop 全部删除-如果由于新的和改进的提交的新基础不需要任何修复,现在不需要更改了,只需运行:

git rebase

告诉Git:毕竟不应该复制此提交。

如果您确实想要空的提交,则可以使用git rebase --skip 自己手动提交,然后使用git commit --allow-empty进行操作。

答案 1 :(得分:0)

我认为问题在于此修订没有没有更改。可能您想做git rebase --skip