git rebase --Continue 不起作用

问题描述 投票:0回答:7

我做了

git rebase master
,修复了文件中报告的冲突,然后
git add
该文件来解决冲突。然后我做了
git rebase --continue
,得到了这个:

应用:固定单元测试

没有变化 - 你是否忘记使用“git” 添加'?如果没有什么可以舞台的,很可能会发生一些事情 其他已经引入了相同的更改;你可能想跳过这个 补丁。

解决此问题后,运行“git rebase --continue”。如果 如果您想跳过此补丁,请运行“git rebase --skip”。到 检查原始分支并停止变基,运行“git rebase --中止”。

知道我在这里缺少什么吗?我应该做 git rebase --skip 吗?

git git-rebase
7个回答
58
投票

如果您使用的是 Mac OS X,那么首先您应该禁用

revisiond
,因为它可能会在变基过程中扰乱工作树中的文件,从而导致不可预测和损坏的行为:

git config --global core.trustctime false

这个问题在本文中进行了解释,非常感谢@nickfalk指出了这一点。

对于你的rebase,这种情况在实践中并不罕见。 让我们尝试思考一下发生的事情的步骤:

  • 当您将当前分支变基到另一个分支之上时,git 将 HEAD 移动到另一个分支,并开始应用当前分支中的唯一提交。

  • 在重放其中一个提交时,您遇到了冲突。您已解决该问题,但结果是没有要提交的更改,也没有在此提交中重播的内容。

实际上,这意味着您拒绝了正在重播的当前提交中的更改。因此,如果您不需要此提交中的任何内容,则跳过它是正常的。所以

git rebase --skip
在这里是有道理的。


8
投票

我在我的项目中遇到了类似的问题,并通过将 --preserve-merges 选项添加到 rebase 命令中来解决。在我的项目中,这个问题是由合并提交引起的,这是一个“空提交”。使用

git rebase --preserve-merges
进行合并提交并继续合并而不破坏提交树。

编辑:

--rebase-merges
--preserve-merges
弃用后官方 git 文档推荐的新命令选项。


7
投票

呼吸,你没有发疯! ;-= 这是一个已知的错误,OSX(如果这确实是你正在使用的)会干扰 git; Tower(不是我)详细介绍了。

短篇故事(即修复)是:

git config --global core.trustctime false

1
投票

我尝试了所有的方法,但没有任何效果。如果您没有处于 rebase 过程中,但 git 一直在抱怨,那么请尝试以下操作。这对我的 OSX 有用。

rm -fr ".git/rebase-apply"


1
投票

git add .
将为您解除此状态的阻止,但如果您通过接受传入更改解决了所有冲突,则无需添加差异,因此 git 认为就 rebase 而言冲突尚未解决。

我采取了一种低调的方法,无需依赖使用神秘的 git 配置更改等的副作用:

  • 向每个冲突文件添加无害内容(例如,在一行上添加
    //
    )(为 git 提供一些内容
    add
  • git add .
  • git rebase --continue
  • 删除无害评论

全部排序🙂


0
投票

这很可能意味着更改已经重新调整。只需检查 git 状态即可。


0
投票

以上建议均无效。我发现我遇到了这个问题,因为我对 master 分支进行了硬重置,而我的功能分支有一些遗留的 master 提交(不要问我怎么做 - 不知道:( )。

我将更改复制到临时目录,删除我的功能分支,将它们复制回来,然后从头开始。丑陋但有效。如果您试图在功能分支中保留多个提交,则不建议这样做。除非您尝试过其他所有,否则不建议这样做。

更新:这有效,但在下面的评论中向我指出了更好的方法。看看吧。

© www.soinside.com 2019 - 2024. All rights reserved.