git rebase和已删除的rebase分支导致“交互式rebase已经启动”错误信息。

21

我在尝试使用几个分支做些事情时,我在一个临时分支上进行了变基,并在解决一些冲突时决定不再完成变基。 然后我删除了涉及到的临时分支并继续前进。 几个小时后,我想对另一个分支进行变基,但是出现了这个错误消息

Interactive rebase already started

git rebase --abort会显示这个错误信息

error: unable to resolve reference refs/heads/tmp/rails3-rails-2-fixes: No such file or directory
fatal: Cannot lock the ref 'refs/heads/tmp/rails3-rails-2-fixes'.
Could not move back to refs/heads/tmp/rails3-rails-2-fixes
尝试创建另一个名为tmp/rails3-rails-2-fixes的分支,但没有成功。有什么想法可以解决这个问题吗?
3个回答

20

嗯,这有点尴尬。重新创建分支应该也是我第一个尝试的方法。如果失败了,你可以尝试删除.git/rebase-merge目录,它包含了rebase的状态。(如果你想要保险起见,可以先将其移动到一边)一旦这个目录被删除,Git就不会知道有一个rebase正在进行中了。检查一下你的分支,确保在此过程中没有丢失任何提交,就可以解决问题了!


1
那个好使了,目前看不到任何漏掉的提交记录,非常感谢你,你救了我很多麻烦:D - tee

10

检查 git status 命令,看是否在上次变基后没有切换到任何分支,则您不在任何分支上。

因为变基将您转移到非分支区域,所以您必须使用 git rebase --abort 命令中止上次的变基,并检出一个分支以进入该分支并开始新的变基。


自从那时起,我已经能够检出其他分支,这也是我没有注意到直到我尝试rebase另一个分支的原因之一。 - tee
是的,您随时可以检出分支。但这是 Git 的功能,当您检出时它不会警告有关变基的问题。但是,当冲突发生时,Git 会警告继续和中止选项。 - Dau
我已经执行了 git rebase --abort 命令,但仍然收到上面的错误消息,是否有其他可能的解决方案? - tee
使用git status命令查看是否有额外的文件,如果有则删除它们,并使用git reset --hard HEAD命令删除rebase头。 - Dau
我在完全不同的分支上,发生变基的那个分支已经被删除了,所以我不确定那样做是否可行。 - tee
git rebase --abort 很棒 :D - Ariful Haque

1
我刚在尝试执行rebase时遇到了一个非常相似的错误,但并没有失败。上面提到的任何提示都没有帮助。以下是我看到的内容:
$ git pull --rebase
warning: refname 'xport1' is ambiguous.
First, rewinding head to replay your work on top of it...
Fast-forwarded xport1 to 98b787b0ea1f7f6771a5b1b56c7e8cc67b84c242.
error: Ref refs/heads/xport1 is at 98b787b0ea1f7f6771a5b1b56c7e8cc67b84c242 but expected 3865d63ffb3a1a495363bfbd9ebb089e16152839
fatal: Cannot lock the ref 'refs/heads/xport1'.
Could not move back to refs/heads/xport1

原来,如果一个引用名称不明确,那么rebase将会失败,至少在git版本1.7.10.2(Apple Git-33)上是如此。 我仔细查看了一下,发现我不小心创建了一个与我试图rebase的分支同名的标签。删除该标签就解决了这个错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接