博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git reset --hard 后的恢复
阅读量:5966 次
发布时间:2019-06-19

本文共 1004 字,大约阅读时间需要 3 分钟。

  hot3.png

惊魂一幕啊 

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

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这么硬的操作也可以找回的。

转载于:https://my.oschina.net/piorcn/blog/407971

你可能感兴趣的文章
Linux中date命令的各种实用方法--转载
查看>>
mysqld -install命令时出现install/remove of the service denied错误的原因和解决办法
查看>>
苹果企业版帐号申请记录
查看>>
C++ Error: error LNK2019: unresolved external symbol
查看>>
Bitmap 和Drawable 的区别
查看>>
Java操作mongoDB2.6的常见API使用方法
查看>>
如何给服务器设置邮件警报。
查看>>
CEF js调用C#封装类含注释
查看>>
麦克劳林
查看>>
延时接通电路
查看>>
周爱民:真正的架构师是没有title的(图灵访谈)
查看>>
Eclipse SVN修改用户名和密码
查看>>
架构师的职责都有哪些?
查看>>
SVN: bdb: BDB1538 Program version 5.3 doesn't match environment version 4.7
查看>>
jsp内置对象作业3-application用户注册
查看>>
android115 自定义控件
查看>>
iOS uuchart 用法
查看>>
c# 多线程 调用带参数函数
查看>>
JQuery 如何选择带有多个class的元素
查看>>
The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
查看>>