我执行后如何恢复:git reset --hard HEAD

时间:2013-01-10 05:11:10

标签: ios git

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

感谢数百万人

6 个答案:

答案 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的文件。