大约一周前,我在清理仓库时重定了一些提交的基,显然我并没有真正完成它。今天,一周和几个提交之后,我去重定基重新排序今天的几个提交,它告诉我我已经在重定基中了。
这应该是一个提示,以复制我的repo以防万一。但我没有...相反,我运行了git rebase --abort
,当时听起来是正确的。嗯,这是不正确的。它中止了一周前的rebase,并将master的HEAD重置为旧的。
我还有其他几个最近的分支,我也推到了remote几次,但是最近的更改似乎永远消失了。我没有适当的git-fu级别来知道是否有任何方法可以恢复我的更改。
我完蛋了吗?
2条答案
按热度按时间e3bfsja21#
检查
git reflog
。几乎在所有情况下,您都可以使用这些提交哈希值作为参考,回到过去。我也会把git repo目录复制到其他地方,作为一个地方来做初步测试,看看什么会起作用,这样你就可以随心所欲地摆弄任何东西,而不会丢失未跟踪的文件,或者让东西进入一种你无法恢复的状态。
0yg35tkg2#
您应该能够通过
git reflog
获取最近提交的SHA1(在git rebase --abort
之后消失)。然后您就可以将当前分支重置为SHA1
它有点像“Undoing a
git reset --hard HEAD~1
“。另请参见“使用Git恢复丢失提交的图解指南”,了解其他恢复示例。