文档章节

Git reset --hard 后的恢复

pior
 pior
发布于 2015/04/29 10:45
字数 486
阅读 184
收藏 0

惊魂一幕啊 

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

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


© 著作权归作者所有

共有 人打赏支持
pior
粉丝 25
博文 151
码字总数 22496
作品 0
济南
高级程序员
如何恢复gitreset--hard*删除的文件?

git reset --hard 慎用!!! git reset --hard 慎用!!! git reset --hard 慎用!!! 今天,不小心使用了下面的Git命令,结果导致了文件被删除了,花了很大力气才恢复出来。 起因:准备提交代码,...

江木
2017/12/16
0
0
Git Bash 命令

git 基础 git 分为三个区:工作区、暂存区、仓库 进入文件夹,并用git 命令初始化目录使它成为git管理仓库。 cd :进入文件目录。 ls:显示目录下所有文件。 mkdir:创建文件目录。 git init...

fengzhi714
2016/12/02
20
0
批处理中cmd /c 作用问题

批处理中 cmd /c git init echo hello>welcome.txt 如果不加cmd /c ,则在git init好了之后后面的语句都不会被执行 ===================== 这是我这几天看GIT权威指南时,将书里例子弄成一个...

ddatsh
2011/10/05
1K
2
git revert 和reset的区别

这里讲一下git revert和git reset的区别: git revert 是撤销某次操作,此次操作之前的commit都会被保留 git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区 具体一个例子,假...

mingkaidox
2013/07/16
0
6
Git学习-版本冲突

是这样的,最近在和别人一起做项目的时候,伙伴在上传他的代码时,因为上传速度比较慢,他以为是卡机了,所以关掉git bash,重新上传,重复了几次,最后导致Github上面的代码乱码,而我却把上...

Ryane
2016/05/12
90
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
1
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
1
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部