git reset –hard误操作,如何恢复数据
今天遇到了个糗事,git commit后push时,提示失败,有文档需要merge,excel文档无法用工具merge,反正都是我自己写的文档,所以根本就没想,直接执行了
git reset –hard xxxxx
然后就无语了,另外一个已commit的文档忘记备份了,网上找了一些方法,下面说一下我的尝试。
首先在git路径下打开git bash
方法一:(未成功)
git fsck –lost-found
然后去.git/lost-found文件夹下去找,据说如果commit后未push的可以在这里找到,但是我没有,可能这种方法只针对于soft reset吧,后面未去尝试。
方法二:(未成功)
git reflog
我想恢复的版本是a404eb8
git reset a404eb8
但是我已经commit未push的文件还是没有出来,我以为我恢复的版本可能不对,所以多试了几个版本,依旧没有找到我的文档。
方法三:(成功)
前面步骤同方法二
git reflog
我想恢复的版本是a404eb8
git reset –hard a404eb8
此时,神奇的找回了我的版本的文档!!
总结:
1.大家尽量不要将git使用–hard的方式恢复,这样会出意想不到的问题,好在我这个文档的修复是commit过的,一旦没有commit就恢复,后果不堪设想;
2.大家一定要保持经常commit的习惯,即使没有完成修改,commit后不push到服务器即可,但一定要commit,否则出了问题就无法恢复了。
3.出了问题,相信git还是很强大的,一定要有耐心去调试各种问题,并在调试之前做好备份,将git整个文件夹备份一下,万一这个环境被我玩坏了,起码我还能恢复到以前我认为不完美但相对还算完美的版本,哈哈!