我做了git rebase master
,修复了文件中报告的冲突,然后git add
文件来解决冲突。然后我做了git rebase --continue
,得到了这个:
应用:固定单元测试
没有变化-你忘记使用'git add'了吗?如果没有什么东西可以提交,很可能是其他东西已经引入了相同的变化;你可能想跳过这个补丁。
当你解决了这个问题,运行“git rebase --continue”。如果你想跳过这个补丁,运行“git rebase --skip”。要 checkout 原始分支并停止rebase,运行“git rebase --abort”。
知道我在这里遗漏了什么吗?我应该做git rebase --skip吗?
7条答案
按热度按时间lmvvr0a81#
如果你是在Mac OS X中,那么首先你应该禁用
revisiond
,因为它会在rebase的过程中扰乱你的工作树中的文件,导致不可预测和破坏的行为:这个问题在this article中有解释,非常感谢@nickfalk指出了这个问题。
至于你的rebase,这种情况在实践中并不罕见。让我们试着想想发生了什么的步骤:
实际上,这意味着你拒绝了正在重放的当前提交中的更改。所以,如果你不需要这个提交中的任何东西,跳过它是正常的。所以
git rebase --skip
在这里是有意义的。d5vmydt92#
我在我的项目中遇到过类似的问题,通过在rebase命令中添加--preserve-merges选项解决了这个问题。在我的项目中,这个问题是由合并提交引起的,这是一个“空提交”。使用
git rebase --preserve-merges
,它接受合并提交并继续合并,而不会破坏提交树。ubby3x7f3#
呼吸,你不会发疯的!-=这是一个已知的bug,OSX(如果你确实在使用它的话)正在干扰git;它是详细的by Tower(不是由我)。
简短的故事(即修复)是:
neekobn84#
我尝试了所有的方法,但都不起作用。如果你没有在rebase中,但git一直在抱怨,那么试试下面的方法。这对我在OSX上很有效。
rm -fr ".git/rebase-apply"
nle07wnf5#
git add .
会解除对你的封锁,但是如果你通过接受传入的修改来解决所有的冲突,那么就没有diff可以添加了,所以git认为就rebase而言,冲突还没有解决。我采取了一种低调的方法,它的工作不依赖于使用神秘的git配置更改等的副作用:
//
在一行)(给予git一些add
的内容)git add .
git rebase --continue
都整理好了🙂
azpvetkf6#
这很可能意味着更改已经被重定基。只需检查git状态即可。
qyyhg6bp7#
我发现我有这个问题是因为我硬重置了master分支,而我的feature分支有一些遗留的master提交(不要问我怎么做的-不知道:())。
我把我的修改复制到一个临时目录,删除了我的特性分支,再把它们复制回去,然后从头开始。很难看,但很有效。如果你想在特性分支中保留多个提交,不建议使用。除非你已经尝试了 Everything ELSE,否则不建议使用。
更新:这是有效的,但在下面的评论中已经向我指出了更好的方法。看看吧。