扯淡!大约一个星期前,我在尝试清理我的存储库时,正在重新设置一些提交,显然我实际上没有完成它.今天,一个星期和几个提交之后,我从今天开始重新订购一些提交,它告诉我,我已经处于变革的中间.
这应该是复制我的回购以防万一的提示.但我没有...而是我git rebase --abort
当时听起来正确.嗯,那不对.它从一周前中止了反转,并将主人的HEAD重置为旧的.假!
我还有其他几个相当近的分支,我已经多次推到远程,但最近的变化似乎永远消失了.我没有适当级别的git-fu知道是否有任何方法可以恢复我的更改.
我搞砸了吗?
编辑 - 哇!多谢你们!git reflog
太棒了!我已经完全恢复了......经验教训.标记Tchalvak的答案被接受为第一个发布.
Kzq*_*qai 104
检查git reflog
.在几乎所有情况下,您都可以使用这些提交哈希作为参考回溯.
我还将git repo目录复制到其他地方,作为进行初步测试的地方,看看哪些方法有效,这样你可以随意乱搞任何你想要的东西而不会丢失未跟踪文件或让事情进入你无法回来的状态从.
Von*_*onC 67
您应该能够获得最新提交的SHA1(在rebase -abort之后消失)git reflog
.
然后,您可以将当前分支重置为SHA1
# Suppose the old commit was HEAD@{2} in the ref log
git reset --hard HEAD@{2}
Run Code Online (Sandbox Code Playgroud)
这有点像" 撤消一个git reset --hard HEAD~1
".
有关其他恢复示例,另请参阅" 使用Git恢复丢失的提交的插图指南 ".