我犯了一个可怕的错误并执行了“git reset --hard HEAD”,整天当地的修改丢失了,我该如何恢复?
感谢数百万人
答案 0 :(得分:29)
您可以使用git reflog
。它会显示HEAD
历史记录。您可以在git reset --hard
之前选择代表HEAD状态的哈希值,并在另一个git reset --hard
中使用此哈希值。
答案 1 :(得分:16)
如果您尚未提交本地更改(或者至少通过git add
进行更改,则它们已经消失。git reset --hard
对于未提交的更改是一种破坏性操作。
如果您碰巧暂存它们但未提交它们,请尝试git fsck --lost-found
然后搜索.git/lost-found
的内容 - 它将包含所有未被引用的对象已知提交,可能包括已暂存的文件版本。
答案 2 :(得分:13)
首先运行:
git reflog
它将显示您的HEAD指针的历史记录。 然后从第一列中选择必要状态的sha-code。我认为如果你只做git reset一次就会在HEAD @ {1}附近。 然后
git merge SHA_CODE
宾果!
您可以在此处找到更多示例: http://www.programblings.com/2008/06/07/the-illustrated-guide-to-recovering-lost-commits-with-git/
答案 3 :(得分:4)
您可以使用git add
恢复git fsck --lost-found
编辑的所有内容,并在.git/lost-found
中查找。 find .git/objects -type f | xargs ls -lt | sed 60q
会向您提供最新的60件事情,这些内容可以添加到回购邮件中,这会给您带来帮助。
你所做的任何事情git add
都已经消失,就像你自己删除它一样。
答案 4 :(得分:0)
如果您的IDE有类似“本地历史记录”(Eclipse有此,IDEA也是AFAIK),那么您可以通过这种方式恢复更改。
答案 5 :(得分:0)
我使用我的Intellij“本地历史记录”恢复了不是“git add”-ed的文件。