在进行正文之前先简单介绍下git reset 命令

git reset

git reset 命令用于改变当前的仓库状态,简单的场景用例:假设一次修改了两个文件,然而需要对这两个文件分别进行两次提交,在进行缓存操作时(git add),不小心将两个文件都进行了缓存,此时我们需要对其中一个文件取消缓存,此时就需要git reset 操作来实现,如下图

然后,对b.txt进行commit操作,然后再对a.txt进行add & commit操作

对于git reset命令添加了**--hard** 参数后会怎样呢,在git官网的reference上 有如下一段话

也就是说,添加--hard参数后,会回到上次commit的状态,也就是说从上次commit之后的的修改都将被重置,换句话说这些数据都丢失了,所以要谨慎操作哦。

前置知识就到这里了,开始今天的重点。

当我们进行了git reset --hard操作进行了版本回退,现在我们又需要之前的修改信息,也就是说我们需要版本回退之前的文件信息,此时我分了三种情况

之前的修改进行了 commit 提交,也就是说我们回退前的修改(曾经)存在于版本里;

之前的修改未进行commit提交,但是进行了 git add 操作;

之前的修改未进行 commit 提交,也未进行git add操作。

如果时第一种情况,很简单我们拿到之前修改的commit的哈希值(或者说id),然后执行 git reset --hard [hash]就可以回退到之前修改的状态。

怎么拿hash, 这个好说,可以执行命令git reflog命令,它会显示出你之前的所有操作

像这个

62f039e 就是我的reflog提交的哈希值,对其进行reset即可

如果是第三种情况,不好意思暂时还没有找回的办法,如果你有欢迎拿出来大家交流

今天的重点就是第二种情况,毕竟曾经我也以为此情况无解,直到后来这边文章诞生前。

今天的主角命令 git fsck,这里呢不具体讲解此命令,只是简单描述利用此命令进行文件恢复。

如图示,我新建了文件c.txt并添加了内容 'git fsck',添加到缓存之后进行了reset操作, 此时因为没有进行git commit操作所以没有hash值,可供恢复,这个时候需要进行操作 git fsck --lost-found操作,返回如下结果:

关于此命令,git官网的解释

根据提示,找到目录'.git/lost-found',可以看到,

我们在‘commit’和‘other’目录下分别看到命令窗口打印出的文件,在‘other‘目录下找出之前遗失的文件

然后新建'c.txt'文件,并将文件内容复制过去,结束。

是不是很麻烦,特别是一次提交的文件多了,一个一个新建(修改)复制过去好烦哦。

是的很烦,所以保持良好的习惯。永远不要让这种操作降临到自己身上才是正道。(这只是为不可控的意外情况准备的)

git reset 怎么还原_git reset --hard 操作后的数据恢复相关推荐

  1. git reset 怎么还原_git reset –hard后的恢复操作

    先说下我遇到的问题和解决办法,然后再放原文. 我遇到的问题 在初始化一个比较大的项目时,由于最后一次commit的文件数量较大,无法成功push,百度无果后想要撤回这次commit,于是手贱用了git ...

  2. git reset 怎么还原_git reset –hard误操作,如何恢复数据

    今天遇到了个糗事,git commit后push时,提示失败,有文档需要merge,excel文档无法用工具merge,反正都是我自己写的文档,所以根本就没想,直接执行了 git reset –har ...

  3. git reset 怎么还原_git reset后如何恢复

    "新来的实习生把自己做了一个月的功能给覆盖了,向我求救,要不要帮他?--编程三分钟" 第 8 篇 找回弄丢的代码 新来的实习生[悲郭]因为不太熟悉git的使用,总是把自己的代码给弄 ...

  4. MySQL中truncate误操作后的数据恢复案例

    MySQL中truncate误操作后的数据恢复案例 这篇文章主要介绍了MySQL中truncate误操作后的数据恢复案例,主要是要从日志中定位到truncate操作的地方然后备份之前丢失的数据,需要的 ...

  5. git reset 怎么还原_git 本地修改被reset后怎么恢复

    reset命令有3种方式: 1:git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息 2:gi ...

  6. oracle更新数据还原,oracle误drop/update操作后的数据恢复测试

    1.drop表,如何进行恢复 create table etl (id number); insert into etl values (1); commit; drop table etl; 如果d ...

  7. MySQL 5.7 update误操作后数据恢复详解

    墨墨导读:本文详述MySQL 5.7 模拟update误操作后进行数据恢复的全过程,希望对大家有帮助. 背景介绍 MySQL目前还没有像Oracle数据库那样强大有闪回的功能,MySQL只能通过挖去b ...

  8. git reset 怎么还原_如何在Git中重置、恢复,返回到以前的状态

    编辑推荐: 本文来自51cto,在本文中,我们将带你了解如何去重置.恢复和完全回到以前的状态,做到这些只需要几个简单而优雅的 Git 命令. 用简洁而优雅的 Git 命令撤销仓库中的改变. 使用 Gi ...

  9. Git 回滚 checkout、reset、revert

    Git 回滚 checkout.reset.revert 首先看一下 Git 的工作流程 checkout 是检出的意思,作用是将某次 commit 的状态检出到工作区,它的过程是先将 HEAD 指向 ...

最新文章

  1. CVTRES : fatal error CVT1100: 资源重复。类型: BITMAP LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏...
  2. 怎样使用Secure CRT查看vcenter和esxi主机的日志文件
  3. Nginx核心要领五:worker_processes、worker_connections设置
  4. VScode 汉化以及侧栏npm脚本显示
  5. linux重定向输出命令
  6. SAP License:最近解决的一些SAP问题
  7. 手把手教你强化学习 (八) 强化学习中的值函数近似算法
  8. Codeforces Good bye 2015 B. New Year and Old Property dfs 数位DP
  9. 冲刺第二阶段工作总结01
  10. 单目标跟踪MOSSE详细算法步骤+理论说明
  11. 计算机病毒主要是通过什么传播,计算机病毒主要是通过什么传播
  12. Vue 中 provide 和 reject 的使用详解和源码解析
  13. AndroidAPI
  14. 数据挖掘(NUFE理论版)
  15. spring cache注解@Cacheable参数key赋值
  16. 排序算法(5) -- 快速排序
  17. MySql 下载安装
  18. 【开源项目】X-TRACK源码分析
  19. 如何编辑图片?图片如何编辑修改?
  20. 计算机平板传输软件,“在iPad和计算机之间无线传输文件的方法”

热门文章

  1. 《抓住听众心理——演讲者要知道的100件事》一20.人们学习的最优长度是20分钟...
  2. ImageMagick之PDF转换成图片(image)
  3. 查杀DeDe数据库后门 网站安全狗DeDe专杀工具
  4. Android 移植到 C#
  5. 比特币现金扬声器系列II将领先的比特币一起带来
  6. SQL-23 对所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列...
  7. linux下配置环境变量【原创】
  8. 通过url,获取html内容,并解析
  9. 使用json-lib实现json to javabean
  10. Week2 Teamework from Z.XML 软件分析与用户需求调查(四)Bing桌面及助手的现状与发展...