自重组开始以来,中止了旧的git rebase并失去了承诺

扯淡! 大约一个星期前,我试图清理我的存储库时重新绑定了一些提交,显然我没有真正完成它。 今天,接下来的一周和几次提交,我从今天开始重新排序几次提交,并且告诉我我已经处于转换阶段。

这应该是为了防万一复制我的回购。 但我没有...,而是我跑git rebase --abort当时听起来正确。 那是不对的。 它从一周前中止了重新设定,并将主人的头部重置为旧的头部。 假!

我还有其他几个分支机构,这些分支机构相当新,而且我已经推动了几次,但最近的变化似乎永远消失了。 我不具备适当级别的git-fu,以了解是否有任何方法可以恢复我的更改。

我拧了吗?

编辑 - 哇! 多谢你们! git reflog非常棒! 我完全康复了...吸取了教训。 标记Tchalvak的答案被接受为第一个发布。


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

我还将其他地方的git repo目录作为一个地方进行复制,以做初步测试,看看哪些工作会发生,这样你就可以随心所欲地乱用任何你想要的东西,而不会丢失未跟踪的文件,或者让事情进入一种你不能回来的状态从。


您应该能够使用git reflog获取最近提交的SHA1(在rebase --abort后消失)。

然后,您可以将当前分支重置为这些SHA1

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

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

有关恢复的其他示例,另请参阅“使用Git恢复丢失的提交的说明性指南”。

链接地址: http://www.djcxy.com/p/23535.html

上一篇: Aborted old git rebase and lost commits since the rebase started

下一篇: How to "undo" rebasing commits