硬。 没有找到fsck,没有在reflog
我想清除一些未提交文件的工作目录,但意外地运行了git reset --hard
。
我意识到我已经失去了以前的(未推)提交,所以我跑了git reset --hard ORIG_HEAD
。 这并没有让我失去我的承诺。
我运行了git reflog
,但提交没有在那里列出。 我也跑了git fsck --lost-found
,但是在列表中没有提交,只有几个不相关的blob和树。
由于我找不到任何丢失提交的引用(除了仍然有相关提交消息和更改列表的.git/COMMIT_EDITMSG
),我不知道如何执行恢复提交。
有什么方法可以让失败的提交回来,还是应该准备好通宵?
不知道为什么你无法找到你的提交,因为@ twalberg关于git reset --hard
的评论是正确的。 不过,这里有些事情要尝试。
您有要查找的提交信息( .git/COMMIT_EDITMSG
)。 如果COMMIT_EDITMSG
被写入,那么该特定的提交应该在某处。 从消息中挑出一些相当独特的文本,然后尝试以下操作:
git log -g --grep="<something specific from your commit message>"
它将通过reflog并查找与您丢失的提交消息中的文本匹配的提交。
如果没有运气,你可以尝试在每个分支上查看所有提交:
git log --all --grep="<something specific from your commit message>"
一旦找到提交散列,您可以检查出它,创建一个新分支,将它合并回当前分支等。
然而,如果这一切都失败了,你可以尝试查看存储库中的对象,但不是任何提交的一部分(例如,添加到索引但未提交)。这个答案可以帮助你:
https://stackoverflow.com/a/7376959/845716
链接地址: http://www.djcxy.com/p/61.html