重置后Git提交丢失 - 硬.fsck找不到,不在reflog中找到

Nie*_*art 6 git git-reset

我想清除一些未提交文件的工作目录,但不小心跑了git reset --hard.

我意识到我丢失了之前的(未推送)提交,所以我跑了git reset --hard ORIG_HEAD.这并没有让我失去承诺.

我跑了git reflog,但提交没有在那里列出.我也跑了git fsck --lost-found,但是列表中没有提交,只有少数不相关的blob和树.

由于我找不到丢失提交的任何引用(除了.git/COMMIT_EDITMSG仍然有相关的提交消息和更改列表),我不知道如何恢复提交.

有没有什么方法可以让丢失的提交回来,或者我应该为全明星做好准备吗?

Rob*_*rek 10

不知道为什么你无法找到你的提交,因为@ 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>"

找到提交哈希后,您可以检查它,创建一个新分支,将其合并回当前分支,等等.

但是,如果全部失败,您可以尝试查看存储库中的对象,但不是任何提交的一部分(例如,添加到索引中,但未提交.)此答案可以帮助您:

/sf/answers/516387161/