自从改革开始以来,流产的旧git rebase和丢失的提交

Aborted old git rebase and lost commits since the rebase started

废话!大约一周前,我在清理我的存储库时重新调整了一些提交,显然我没有真正完成它。今天,一周又几次提交之后,我去Rebase重新排序一些提交,从今天开始,它告诉我我已经在一个Rebase中间了。

为了以防万一,这应该是复制我的回购协议的提示。但我没有……相反,我运行的是当时听起来不错的git rebase --abort。嗯,那是不对的。它从一周前中止了钢筋网,并将大师的头重置为旧的头。笨蛋!

我有几个其他的分支是最近的,我已经推到了遥远的几次,但最近的变化似乎永远消失了。我不具备合适的功夫水平,不知道有没有办法恢复我的变化。

我搞砸了吗?

编辑-哇!谢谢大家!江户十一〔一〕太棒了!我完全康复了…吸取了教训。将tchalwak的答案标记为"第一个发布"。


检查git reflog。在几乎所有情况下,您都可以使用这些提交散列作为引用进行回溯。

我还将把git repo目录复制到其他地方,作为一个做初步测试的地方,看看什么会起作用,这样你就可以处理你想要的任何事情,而不会丢失未跟踪的文件或使事情进入一种你无法返回的状态。


您应该能够用一个git reflog获得最近提交的sha1(在rebase之后消失了——中止)。

然后您可以将当前分支重置为那些sha1

1
2
# Suppose the old commit was HEAD@{2} in the ref log
git reset --hard HEAD@{2}

这有点像"撤销git reset --hard HEAD~1"。

有关恢复的其他示例,请参阅"用Git恢复丢失提交的图解指南"。