从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

上一篇: Recover from git reset

下一篇: iOS 8.1 UITableview Background Colour always white