Git找回回滚后的内容和删除的文件

欢迎点击上方"AntDream"关注我

如果我已经执行了`git reset --hard XXX`,之前的`commit`的内容还能找回来吗?首先,经过之前的学习,我们起码知道,执行完 reset回滚commit以后,之前的commit其实没有被删除,肯定还在的。要找回之前的 commit 的内容,那我们势必得知道对应的commit 的SHA-1值吧,这个时候用git log是看不到的。之前我们曾经提到过,就是 .git目录下有一个 logs 目录,里面记录了所有HEAD改变的记录,包括分支操作(新建、切换等),commit操作(新commit,reset等)。那我们之前 reset 也是更改了HEAD,所以这里面肯定会有我们的记录。可以用下面的方法拿到://是的,你没看错,加个 -g 参数就看得到了
git log -g
//或者是下面的命令
git reflog
拿到之前的 commit信息之后,我们就能找回对应的提交记录了//可以新建一个分支指向对应的提交
git branch branchName commitId
找回删除的文件上面 撤销add 一节中我们用的命令并不会删除工作目录中的文件,但是万一你一不小心漏掉了 --cached 参数,那效果就不一样了,会把工作目录和暂存区中的文件记录都会删除。可以从垃圾桶里面还原出来吗?rm 这个命令是linux命令,文件一旦通过 rm 命令删除,则无法恢复。比如://这样执行删除,new.txt不会出现在垃圾桶
rm new.txt
要想知道删除的文件能不能找回来,我们先得明白我们的文件信息存在于哪些地方。主要是3个:工作目录暂存区也可能有,如果之前 add 过,并且没有做过删除暂存区的操作的话commit信息中,这里如果之前提交过则肯定是有的,而且一般是删除不掉的如果我们前面是通过上面的 rm 命令删除了工作目录的文件,那我们可以从暂存区里面把文件恢复出来:git checkout -- new.txt
如果我们是一开头的那种情况,用  git rm 命令,就会把暂存区和工作区都删除了,那还可以从最近的 commit 中恢复(当然前提是你之前已经提交过了):git checkout HEAD readme.txt
所以综上,还是推荐大家尽量不要用带有 rm 的命令,撤销 add 操作用 reset 命令。reset 命令操作的都是跟 commit 相关的,比如把分支重置到某次 commit,把某些文件重置到某次 commit对应的文件版本等。同时,如果不知道怎么操作,可以用 git status 命令,它会提示一些操作://在 add 之后执行
git status
//输出
On branch master
Changes to be committed:
    //这句就是提示我们,如果后悔add了,可以用下面的 reset命令
  (use "git reset HEAD <file>..." to unstage)

    modified:   myTest.txt

本文分享自微信公众号 - AntDream(gh_267204a81a96)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏月牙寂

leaf源码分析(二)----skeleton

版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转...

14850
来自专栏月牙寂

Gorilla源码分析之gorilla/rpc源码分析

版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转...

12030
来自专栏月牙寂

开源代码protoactor-go源码分析-async schedule

版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转...

12930
来自专栏月牙寂

开源代码学习技巧-Nats源码原理分析

版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转...

26530
来自专栏月牙寂

开源代码protoactor-go[e866f39]源码分析

版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转...

16340
来自专栏颇忒脱的技术博客

MySQL Master Slave Docker部署例子

用Docker部署基于GTID的MySQL Master-Slave Replication例子。

13430
来自专栏月牙寂

leaf源码分析(四)----console和module

版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转...

9010
来自专栏成长道路

apache griffin本地安装部署

1.下载到本地github地址:https://github.com/apache/griffin

55430
来自专栏月牙寂

Fasthttp源码分析之http server源码分析

版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转...

15820
来自专栏前端加油站

tslint pre-commit 配置教程

版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

10230

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励