我再也不能gase rebase --interactive了

时间:2012-05-07 20:28:54

标签: git git-rebase

我在我的回购邮件上尝试git rebase --interactive时遇到了严重问题。我得到了神秘的错误fatal: ref HEAD is not a symbolic ref,我的rebase停止运作。我必须git rebase --abort才能回到良好的状态。

以下是我收到的输出:https://gist.github.com/d38f1e2d2ec9bc480b6f

我过去曾被告知的是,这是因为我处于“超级HEAD”模式,但如果我处于那种模式,我将如何首先进入rebase ?我肯定是从master开始,然后运行git rebase --interactive并将git-rebase-todo文本文件修改为我想要的。然后发生这个错误。

我在工作中问过每个人,有人在freenode上@git。似乎没有人真正了解我的问题或知道解决方案是什么。谷歌搜索该错误没有产生任何结果,StackOverflow上的相关搜索没有任何证据。我似乎无法弄明白这一点,而且从压缩每一次提交到掌握现在推动我做出的每一个小改变作为它自己的单独提交真的很蹩脚。

2 个答案:

答案 0 :(得分:3)

在'git rebase'期间,我们会检查你正在重新定位的引用。如果那个引用是一个提交,那么你会得到一个超然的头;如果它是分支引用,则检出该分支。如果在提交过程中发生了FATAL,那么您将处于一个处于munged状态的工作目录。例如,如果你在分支Foo上,并且你试图从Bar重新定义,那么在一个致命之后,你将会在Bar或某个地方,在Bar之后应用了一些rebase提交。你可以通过简单地查看Foo来恢复。

git rebase --abort 

或者,如果rebase真的被楔入(参见下面的参考文献),则为:

git checkout -f Foo

之后,您可以再次安全地尝试使用rebase来尝试调试FATAL发生的原因。 Here是内存不足时rebase失败的情况,'git rebase --abort'不起作用。

答案 1 :(得分:0)

git rebase --abort 对我不起作用。虽然 rebase 输出已经提供了解决方案:

fatal: It seems that there is already a rebase-merge directory, and
I wonder if you are in the middle of another rebase.  If that is the
case, please try
        git rebase (--continue | --abort | --skip)
If that is not the case, please
        rm -fr ".git/rebase-merge"
and run me again.  I am stopping in case you still have something
valuable there.

即运行 rm -fr ".git/rebase-merge 后,一切恢复正常。