Git reset --hard 后的恢复
博客专区 > pior 的博客 > 博客详情
Git reset --hard 后的恢复
pior 发表于2年前
Git reset --hard 后的恢复
  • 发表于 2年前
  • 阅读 119
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

惊魂一幕啊 

刚才执行了么这一系列的操作:

1,把最新写的代理commit到本地,没有push

2.reset --hard 到一个以前的版本.

回头一看....我去``刚提交的版本呢???

本来以为reset --hard只会把head标记带指定版本上, 分支不会变的, 结果分支也下来了`

最新版本就停在已提交到远程的版本上了....

这几天的提交都没了??!!

这可咋整...........

git log也看不到.....

git到底是什么鬼....

放狗搜了一下说--HARD 会删交提交...........

于是做了一下测试``

新提交一个版本``再reset --hard到以前的版本```是会删除之前的提交```

但是如果你在新提交的版本上再加一个分支```reset --hard后提交还是在的``因为已经有一个分支在那里了```

好吧```已经删除了``再放狗看看怎么找回吧```发现了reflog指令:

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天以后。

总结:

在做一些危险动作以前,比如reset,还是能多打下一分支的好,保险。反正随时可以删。

git没有想的这么危险,就算--HARD这么硬的操作也可以找回的。


共有 人打赏支持
粉丝 25
博文 151
码字总数 22496
×
pior
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: