很不幸,我多次执行了git reset --hard HEAD^
命令,在几个文件中丢失了相当大的代码块。是否有办法恢复这些提交或在此情况下前进到之前的HEAD位置,以便我可以找回那些丢失的行?
使用reflog来恢复之前HEAD的SHA1值。特别是文章reflog, your safety net对你来说将会非常相关。文章中说:
这个命令最常用的情况是,你刚刚执行了
git reset
并把你的HEAD
回滚到前面几个提交。但是糟糕了,你需要那个位于第二次提交中的代码。现在该怎么办呢?
一旦找到想要回到的提交的SHA1值,使用以下语句之类的内容:
git reset --hard 0a1b2c
如果您刚刚提交了代码并想要撤消该操作,请运行git reset --hard HEAD@{1}
。
请参阅名为“序数规范”的部分,网址为http://book.git-scm.com/4_git_treeishes.html。
HEAD@{n}
来恢复数据,需要从reflog中找到相应的n值。 - Michael Mrozekgit log -g
查看 reflog,这可能比git reflog show
提供更多的上下文。 - Chris Johnsengit reset --hard "HEAD@{1000000 years ago}"
- J-16 SDiZ