如何在执行"git reset --hard HEAD"后进行恢复?

11
我犯了一个严重的错误,执行了“git reset --hard HEAD”,导致今天的本地修改都丢失了,我该如何恢复呢?
非常感谢。

1
可能是在执行git reset --hard HEAD^后恢复添加的文件的重复问题。 - user456814
6个回答

30

您可以使用git reflog命令。它会显示HEAD的历史记录。您可以选择代表git reset --hard之前HEAD状态的哈希值,并在另一个git reset --hard中使用此哈希值。


2
这个救了我。这一定是被接受的答案!! - limoragni
非常感谢您!在我这种情况下,真的是救命稻草! - Joe

17

你让我的一天变得美好。谢谢! - Mihai

17
如果您还没有提交本地更改(或至少通过git add将它们暂存),那么它们会丢失。对于未提交的更改,git reset --hard是一种破坏性操作。
如果您已经将更改暂存,但是没有提交它们,请尝试git fsck --lost-found,然后搜索.git/lost-found中的内容-它将包含所有未被已知提交引用的对象,并且可能包括已经被暂存的文件版本。

git fsck --lost-found 拯救了我的生命,非常感谢。 - lutaoact
请按照下一个答案中所述使用 git reflog。 - lami

4
你可以通过使用 git fsck --lost-found 命令并在 .git/lost-found 目录下查看来恢复你添加的任何内容。运行 find .git/objects -type f | xargs ls -lt | sed 60q 将列出最近添加到版本库中的最后60个项目,这会有所帮助。
如果你没有使用 git add 命令添加,那么它就像你自己删除了一样,是无法找回的。

我之前没有进行提交(commit)或添加(add)操作。 - LiangWang

1
如果你的IDE有类似于“本地历史记录”(Eclipse有这个功能,我认为IDEA也有),那么也许你可以通过这种方式恢复你的更改。

0

我使用Intelliji的“本地历史”恢复了未被“git add”的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接