git rebase - 继续努力

时间:2014-02-19 18:55:57

标签: git git-rebase

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

  

申请:固定单元测试

     

没有变化 - 你忘了使用'git   加'?如果没有任何东西可以上台,那么很有可能   否则已经引入了相同的变化;你可能想跳过这个   补丁。

     

解决此问题后,请运行“git rebase --continue”。如果   你更喜欢跳过这个补丁,而是运行“git rebase --skip”。至   检查原始分支并停止变基,运行“git rebase   --abort”。

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

7 个答案:

答案 0 :(得分:28)

如果您使用的是Mac OS X,那么首先应禁用revisiond,因为它可能会在rebase中间弄乱工作树中的文件,从而导致不可预测和破坏的行为:

git config --global core.trustctime false

this article解释了这个问题,非常感谢@nickfalk指出了这一问题。

至于你的篮板,这种情况在实践中并不罕见。 让我们试着思考一下发生了什么的步骤:

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

  • 在重播其中一个提交时,您遇到了冲突。您解决了它,但结果是没有提交更改,在此提交中没有重播。

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

答案 1 :(得分:3)

呼吸,你不会疯了! ; - =这是一个已知的错误,其中OSX(如果确实是你正在使用的)正在搞乱git,它是详细的here(不是我)。

短篇小说(即修正)是:

git config --global core.trustctime false

答案 2 :(得分:1)

我的项目中遇到了类似的问题,并通过将--preserve-merges选项放入rebase命令来解决。在我的项目中,这个问题是由合并提交引起的,这是一个"空提交"。使用git rebase --preserve-merges它会进行合并提交并继续合并而不会破坏提交树。

答案 3 :(得分:0)

这很可能意味着这些变化已经被重新定位。只需检查一下git状态。

答案 4 :(得分:0)

以上建议均无效。我发现存在此问题是因为我对master分支进行了硬重置,而我的feature分支却有一些旧版master提交(不要问我怎么做-不知道:()。

我将更改复制到一个临时目录中,删除了功能分支,又将其复制回,然后从头开始。丑陋但有效。如果您要在功能分支中保留多个提交,则不建议使用。除非您尝试过其他一切,否则不建议使用。

答案 5 :(得分:0)

我尝试了所有方法,但对我没有任何帮助。如果您不在重新设置的中间,但是git一直抱怨,请尝试以下操作。这对我来说对OSX有用。

rm -fr ".git/rebase-apply"

答案 6 :(得分:0)

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

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

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

全部排序?