先说下我遇到的问题和解决办法,然后再放原文。

我遇到的问题

在初始化一个比较大的项目时,由于最后一次commit的文件数量较大,无法成功push,百度无果后想要撤回这次commit,于是手贱用了git reset --hard origin/master,结果commit是撤回了,但是文件也丢失了,且通过GitHub desktop客户端是无法看到这次的reset记录的,然后感觉,完了!文件找不回来了,抱着试试看的态度百度了一下,得知了有git reflog这个命令,然后我看到了下面这个图。

里面把你所有的git操作都记录下来了,包括git reset --hard xx。

所以肯定是可以找回我的文件的,话不多说直接上解决办法,原理解释留给后面的精彩原文。

解决办法

git reset --hard dea3f790

然后我的59630个丢失文件就回来了。

精彩原文(幽默风趣的详细解读)

看到这个标题,你以为能恢复??

。。。转载过来以为是能挽救git reset –hard的神技,然而不是。。。

看到这篇的同学可以有个心理安慰了,这边还有没提交修改就rest,想撞墙的想剁手的。。。

划重点,使用git reset –hard(此参数有毒)之前一定要git commit或者 git add 或者 git stash或者。。。

假如你这些操作都没有执行的话,博主还有一个找了多年的方法能挽救。。。

那是一个风雨交加的夜晚,博主头顶十米长的避雷针,一声惊雷下来,哇咔咔!博主穿越到还没rest之前的时空!!哈哈哈哈天无绝人之路啊!!!

《转》Git 撤销commit的注意事项 http://www.cnblogs.com/scodong/p/4757378.html

Git撤销commit的操作命令 git reset --hard HEAD^

一、新建三个文件,demo1,demo2,demo3

二、git add 命令提交到暂存区,git reset HEAD demo1就是把提交到暂存区里的文件撤销。

上图中,执行git reset HEAD demo1就会把demo1从暂存区中撤销,现在是untracked.

三、git commit 提交本地仓库

上图中显示,git commit把demo2,demo3提交到本地仓库中。

四、现在想撤销之前的commit,可以用git reset --hard HEAD^命令

第三步中,先commit demo2,再commit demo3,因此现在的HEAD即是demo3的commit值。

(HEAD是指向最新的提交,上一次提交是HEAD^,上上次是HEAD^^,也可以写成HEAD~2 ,依次类推)

因此git reset --hard HEAD 就是把最新提交的demo3撤销掉,撤销是非常彻底的,本地文件也会删除。—–特么说这么多,你到是把这句放在最上面啊

恢复 git reset -hard 的误操作 ——这是有commit操作的,之前要有这操作,我还来百度?

此部分内容转自:https://www.cnblogs.com/mliudong/archive/2013/04/08/3007303.html

有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge。甚至一些很小的操作,例如删除一个分支,我都担心数据丢失。

不久之前,我在做一些大动作(rebasing)之前,我总是备份整个版本库,以防万一。直到最近我才发现git的历史记录是不可修改的,也就是说你不能更改任何已经发生的事情。你做的任何操作都只是在原来的操作上修改。也就是说,即使你删除了一个分支,修改了一个提交,或者强制重置,你仍然可以回滚这些操作。

让我们来看一些例子:

你现在看git的历史记录,你可以看到两次提交:

现在让我们来重置回第一次提交的状态:

这看起来我们是丢掉了我们第二次的提交,没有办法找回来了。但是 reflog 就是用来解决这个问题的。简单的说,它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会被记录在reflog中。

所以,我们要找回我们第二commit,只需要做如下操作:

再来看一下 git 记录:

所以,如果你因为reset等操作丢失一个提交的时候,你总是可以把它找回来。除非你的操作已经被git当做垃圾处理掉了,一般是30天以后。

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

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

    在进行正文之前先简单介绍下git reset 命令 git reset git reset 命令用于改变当前的仓库状态,简单的场景用例:假设一次修改了两个文件,然而需要对这两个文件分别进行两次提交,在 ...

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

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

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

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

  4. git master主分支_Git分支管理策略及简单操作

    前几天整理了一下之前项目的开发代码,当时使用了Git来进行代码版本管理.虽然本人熟悉常用的Git操作,但是对分支的管理经验非常欠缺.拿这个项目来说,在项目中有不下20个分支,每个分支间的继承关系相当之 ...

  5. 模拟数据库,表空间和数据文件损坏后的恢复操作

    1环境准备 对数据库做一次全备份: 验证当前的备份文件: 2数据库损坏的恢复 2.1模拟数据库损坏 尝试重启数据库查看报错: 这里需要重点说明的是因为我们用的是CATLOG数据库作为目录数据库,所以即 ...

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

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

  7. git config设置用户名_git从安装到多账户操作一套搞定(二)多账户使用

    作者:良知犹存 转载授权以及围观:欢迎添加微信:Allen-Iverson-me-LYN 总述 GIT是当今热门代码管理技术,但是如此火的系统,竟然是大神林纳斯花了两周用C写出来的一个分布式版本控制系 ...

  8. linux误删除文件后的恢复操作

    下面介绍具体方法: 先说下我准备删除的文件为/root/silencewolf/silencewolf.sh 里面内容如下: 执行rm -f silencewolf.sh,用ls查看文件夹为空了 下面 ...

  9. git 几种还原版本_git的几种回滚 git revert 和 git reset的区别

    git的几种回滚 git revert 和 git reset的区别: 强烈建议:对HEAD不熟的话最好不要用HEAD,直接用commitID吧,我遇到的问题:reset HEAD~1之后,可能是别人 ...

最新文章

  1. 哀悼!华人著名计算机科学家刘炯朗逝世,图灵奖得主姚期智为其得意门生
  2. 软件包管理 之 file.src.rpm 使用方法的简单介绍
  3. JSF的web.xml配置
  4. 【微信小程序】 setData 的用法
  5. 数列分段(信息学奥赛一本通-T1428)
  6. 官方再曝vivo X30系列拍照新技能:主角光环不虚焦
  7. web servieces 学习小栗子
  8. CURL 错误码 中文翻译
  9. 单用户模式 启动 mysql_单用户模式连接以及故障排除
  10. linux ss命令详解
  11. Julia安装与配置Jupyter Notebook
  12. [嗅探神器]Intercepter,支持当前所有流行OS
  13. python中哈希是什么意思_python hash是什么
  14. Lua学习笔记-OOP面向对象
  15. python程序流程控制_Python流程控制语句详解
  16. “男朋友送了我一瓶才100多块的香水”
  17. php实现离线挂机,自动离线挂机脚本下线自动挂机脚本
  18. 2015年腾讯阿里实习生招聘面试经历
  19. 【转载】VS2019使用技巧
  20. html5图像自动旋转,HTML5 旋转图像

热门文章

  1. Synchronize对象锁异步
  2. MySQL事务的读脏
  3. 牛X!Eclipse 开始支持 Java 14~
  4. 【通知】+ java基础提升篇:Java 序列化的高级认识
  5. xxx cannot be resolved to a type 错误解决方法
  6. 【深入Java虚拟机JVM 04】JVM内存溢出OutOfMemoryError异常实例
  7. 巧用Eclipse中用户自定义包(User Libraries)
  8. mysql 乘法拼接字符串_【原创】利用MySQL 的GROUP_CONCAT函数实现聚合乘法
  9. Ajax+jquery实现异步验证用户名功能
  10. 修改Linux终端命令行字体颜色(对比明显,超炫酷)