11

我犯了一个可怕的错误并执行“git reset --hard HEAD”,整天本地修改丢失,我该如何恢复?

谢谢百万

4

6 回答 6

30

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

于 2013-01-10T06:59:29.267 回答
17

如果您尚未提交本地更改(或至少通过 暂存它们git add,它们就消失了。git reset --hard对于未提交的更改是一种破坏性操作。

如果您碰巧暂存了它们,但没有提交它们,请尝试git fsck --lost-found然后搜索的内容.git/lost-found- 它将包含已知提交未引用的所有对象,并且可能包括已暂存的文件版本.

于 2013-01-10T05:18:31.157 回答
17

首轮:

git reflog

它将显示您的 HEAD 指针的历史记录。然后从第一列中选​​择必要状态的 sha-code。如果您只进行一次 git reset --hard ,我认为它会在 HEAD@{1} 附近。进而

git merge SHA_CODE

答对了!

您可以在此处找到更多示例:http: //www.programblings.com/2008/06/07/the-illustrated-guide-to-recovering-lost-commits-with-git/

于 2014-01-15T14:22:43.373 回答
4

您可以恢复您git add编辑、使用git fsck --lost-found和插入的任何内容.git/lost-foundfind .git/objects -type f | xargs ls -lt | sed 60q会给你最后 60 件东西添加到回购中,这会有所帮助。

任何你没有git add删除的东西都会像你自己删除一样肯定消失。

于 2013-01-10T05:19:41.827 回答
1

如果你的 IDE 有类似“本地历史”的东西(Eclipse 有这个,IDEA 也有 AFAIK),那么也许你可以通过这种方式恢复你的更改。

于 2013-01-10T06:34:52.010 回答
0

我用我的 Intelliji“本地历史”恢复了不是“git add”的文件。

于 2013-05-07T16:59:38.353 回答