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

标签 git git-rebase

我正在运行一个相当复杂的 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

最佳答案

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

RM debugger

也就是说,在 git rebase 期间,它的工作原理是将一系列提交复制到新的和改进的提交中,这些提交的作用与原始提交相同,除了一些改进(例如,在不同的起始基本提交),Git 尝试复制该提交,并遇到一些 merge 冲突。因此,rebase 因 RM debugger 尚未应用而停止。

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

此消息:

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

并不意味着存在冲突。这意味着索引中的源代码现在可以作为 RM 调试器 的新的和改进的副本提交,与中的源代码完全相同您现有的提交dc04ac4(改进警告),它本身是一些旧提交的副本,其主题已经是改进警告

Git 不喜欢重复相同源代码的提交。 (Git 将这些空提交称为空提交,尽管它们根本不是空的,它们只是立即重复。)它非常不喜欢这样做,以至于 git rebase 拒绝这样做默认情况下,包括在解决所有冲突之后。

有时这表明您以错误的方式解决了冲突:您不小心丢失了更改。但也许这正确的做法。

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

git rebase --skip

告诉 Git:这个提交毕竟不应该被复制。

如果您确实想要空提交,可以使用 git commit --allow-empty 自己手动提交,然后使用 git rebase --continue 继续.

关于git rebase --Continue 仍然看到冲突,git status 告诉我没有冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56410599/

相关文章:

Git:如何查找何时将提交 merge 到 master 中?

git rebase 私有(private)功能分支

git - 如何用 git gui 做一个 rebase?

git - 执行 Git pull 以覆盖本地更改

git rebase 颠倒过来

git - 在使用 GIT 分支时何时不使用 "git rebase"?

带有多台机器的 git 单一开发人员 - rebase 和提交出现两次

git - .gitignore 异常(exception)是包含额外的文件

java - 如何在 jgit 中调用 git show --first-parent?

git - 如何为具有同一主机的多个 gitlab 帐户使用多个 ssh key