9

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 上的相关搜索也没有任何结果。我似乎无法弄清楚这一点,从压缩我推送到 master 的每一个提交到现在将我所做的每一个小更改都推送为它自己的单独提交,这真的很蹩脚。

4

2 回答 2

4

在“git rebase”期间,您要重新设置基准的 ref 被签出。如果那个 ref 是一个提交,那么你会得到一个分离的头;如果它是一个分支引用,则该分支被签出。如果在提交过程中发生 FATAL,那么您的工作目录将处于 munged 状态。例如,如果你在分支 Foo 并且你试图从 Bar 变基,那么在 FATAL 之后,你将在 Bar 或 Bar 之后的某个地方,并应用了一些变基提交。您可以通过简单地检查 Foo 来恢复。

git rebase --abort 

或者,如果 rebase 真的被楔入(参见下面的参考资料),如:

git checkout -f Foo

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

于 2012-05-08T17:03:14.510 回答
0

git rebase --abort对我不起作用。尽管变基输出已经提供了解决方案:

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,事情又恢复了正常。

于 2021-01-26T10:22:18.670 回答