git reset -hard操作的找回

https://blog.csdn.net/qq_18242391/article/details/78556328

最近提交代码的时候,commit了不想提交的文件,结果reset –hard了项目,使项目回到了之前的一个版本,一天写的代码白写了,当时真以为完了,后来被另一个android解决了,把我reset的代码找到了。趁此赶紧记录下解决办法。

只要commit的代码,reset之后的操作还是可以找回的。

eg:

$ git init 
$ touch foo.txt 
$ git add foo.txt 
$ git commit -m "initial commit"

$ echo 'new data' >> foo.txt 
$ git commit -a -m "more stuff added to foo"

你现在看git的历史记录,你可以看到两次提交:

$ git log 
* 98abc5a (HEAD, master) more stuff added to foo 
* b7057a9 initial commit

现在让我们来重置回第一次提交的状态:

$ git reset --hard b7057a9 
$ git log 
* b7057a9 (HEAD, master) initial commit

这看起来我们是丢掉了我们第二次的提交,没有办法找回来了。但是 reflog 就是用来解决这个问题的。简单的说,它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会被记录在reflog中。

$ git reflog 
b7057a9 HEAD@{0}: reset: moving to b7057a9 
98abc5a HEAD@{1}: commit: more stuff added to foo 
b7057a9 HEAD@{2}: commit (initial): initial commit

所以,我们要找回我们第二commit,只需要做如下操作:

$ git reset --hard 98abc5a

再来看一下 git 记录:

$ git log 
* 98abc5a (HEAD, master) more stuff added to foo 
* b7057a9 initial commit

所以,如果你因为reset等操作丢失一个提交的时候,你总是可以把它找回来。除非你的操作已经被git当做垃圾处理掉了,一般是30天以后。

更多
廖雪峰

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值