从git重置恢复
有没有办法从git reset --hard HEAD
恢复未提交的工作目录更改?
一般情况下,您无法取回未提交的更改。
以前的阶段性变更( git add
)应该可以从索引对象中恢复,所以如果你这样做了,使用git fsck --lost-found
找到与它相关的对象。
如果没有,这里的答案是:看你的备份。 也许你的编辑器/ IDE存储在/ tmp或C: TEMP下的临时拷贝以及类似的东西[1]。
git reset HEAD@{1}
这将恢复到以前的HEAD
[1] vim eg可选择存储持久性撤销, eclipse IDE存储本地历史; 这些功能可能会节省您的**
我今天也意外地跑了git reset --hard
今天也在我的回购库上进行操作,而今天也没有提交任何更改。 为了恢复它,我运行了git fsck --lost-found
,它将所有未被引用的blob写入<path to repo>/.git/lost-found/
git fsck --lost-found
<path to repo>/.git/lost-found/
。 由于这些文件未提交,因此我在<path to repo>/.git/lost-found/
目录中的other
目录中找到它们。 从那里,我可以看到未提交的文件,复制出斑点并重命名它们。
注意:只有当你想要保存的文件添加到索引时(使用git add .
),这才起作用。 如果文件不在索引中,则会丢失。
从这个SO回答
$ git reflog show
93567ad HEAD@{0}: reset: moving to HEAD@{6}
203e84e HEAD@{1}: reset: moving to HEAD@{1}
9937a76 HEAD@{2}: reset: moving to HEAD@{2}
203e84e HEAD@{3}: checkout: moving from master to master
203e84e HEAD@{4}: reset: moving to HEAD~1
9937a76 HEAD@{5}: reset: moving to HEAD~1
d5bb59f HEAD@{6}: reset: moving to HEAD~1
9300f9d HEAD@{7}: commit: fix-bug
# said the commit to be recovered back is on 9300f9d (with commit message fix-bug)
$ git reset HEAD@{7}
你有一天回来! :)
链接地址: http://www.djcxy.com/p/23491.html