硬。 没有找到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

上一篇: hard. Not found by fsck, not in reflog

下一篇: How can I recover a lost commit in Git?