我犯了一个可怕的错误并执行“git reset --hard HEAD”,整天本地修改丢失,我该如何恢复?
谢谢百万
您可以使用git reflog
. 它将显示HEAD
历史。您可以在 之前选择代表 HEAD 状态的哈希,git reset --hard
并在另一个中使用此哈希git reset --hard
。
如果您尚未提交本地更改(或至少通过 暂存它们git add
,它们就消失了。git reset --hard
对于未提交的更改是一种破坏性操作。
如果您碰巧暂存了它们,但没有提交它们,请尝试git fsck --lost-found
然后搜索的内容.git/lost-found
- 它将包含已知提交未引用的所有对象,并且可能包括已暂存的文件版本.
首轮:
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/
您可以恢复您git add
编辑、使用git fsck --lost-found
和插入的任何内容.git/lost-found
。 find .git/objects -type f | xargs ls -lt | sed 60q
会给你最后 60 件东西添加到回购中,这会有所帮助。
任何你没有git add
删除的东西都会像你自己删除一样肯定消失。
如果你的 IDE 有类似“本地历史”的东西(Eclipse 有这个,IDEA 也有 AFAIK),那么也许你可以通过这种方式恢复你的更改。
我用我的 Intelliji“本地历史”恢复了不是“git add”的文件。