我做了git rebase master
,修复了文件中报告的冲突,然后git add
文件来解决冲突。然后我做了git rebase --continue
,得到了这个:
申请:固定单元测试
没有变化 - 你忘了使用'git 加'?如果没有任何东西可以上台,那么很有可能 否则已经引入了相同的变化;你可能想跳过这个 补丁。
解决此问题后,请运行“git rebase --continue”。如果 你更喜欢跳过这个补丁,而是运行“git rebase --skip”。至 检查原始分支并停止变基,运行“git rebase --abort”。
知道我在这里缺少什么吗?我应该做git rebase --skip吗?
答案 0 :(得分:28)
如果您使用的是Mac OS X,那么首先应禁用revisiond
,因为它可能会在rebase中间弄乱工作树中的文件,从而导致不可预测和破坏的行为:
git config --global core.trustctime false
this article解释了这个问题,非常感谢@nickfalk指出了这一问题。
至于你的篮板,这种情况在实践中并不罕见。 让我们试着思考一下发生了什么的步骤:
当您将当前分支重新绑定到另一个分支之上时,git会将HEAD移动到另一个分支,并开始应用您当前分支中的唯一提交。
在重播其中一个提交时,您遇到了冲突。您解决了它,但结果是没有提交更改,在此提交中没有重播。
实际上,这意味着您拒绝了当前正在重播的提交中的更改。因此,如果您不需要此提交中的任何内容,则跳过它是正常的。所以git rebase --skip
在这里有意义。
答案 1 :(得分:3)
短篇小说(即修正)是:
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
全部排序?