误用git reset -hard 的检讨书

消失的代码们:

我知道你们可能看不到了,但是我还是需要自我反省自己,因为自己的误操作,导致了你们的消失。

事情的始末

夜阑人静,周围除了少年敲击键盘的声音,就再也听不到其他声响,他伸了伸懒腰,满意的看着眼前的Android Studio中自己奋斗了1个小时的成果,熟练的按下了git commit,正要起身离开。

AS报了错误:

Pull is not possible because you have unmerged files

少年轻蔑的笑了,随即打开Chrome输入了那段报错提示,困意袭来,出现的第一个搜索结果让他毫不犹豫的点了进去,少年快速的滑动文章,直接找到了解决代码部分:

复制,转到AndroidStudio >Terminal > 输入 >回车 ,一气呵成。

然而他再也笑不出来,眼前的项目已变回上一次自己 **git pull ** 的样子,之间自己没有过 commit 除了 Android Studio 自动的 add ,自己辛苦一小时的成果连个影子都已看不到。脑袋"轰"的一下,困意全无。

慌乱的打开浏览器,查找着解决办法,不放过任何一个可能的机会,但是他又错了,又是看到任何一个救命稻草就拼命抓住,多经过多次尝试,最终,少年找到了解决办法。

少年这会仔细的阅读了文章,加上前面几次的尝试未果的经验,很快就理解并再次敲起了键盘:

     git fsck --lost-found

他知道,这个命令并不会让他的项目马上发生变化,几乎是同一时间,Terminal输出了这样一段代码:

Terminal告诉少年,丢失的文件已经帮他找回来,放在了lost-found文件夹下

确认过眼神,这确实是丢失的文件,只是文件名已看不出样子,内容是源码,遗憾的是,大概之前尝试的命令混乱,lost-found下的文件内容不是最新的,大概是创建文件后短暂的时间,并且不是新建的文件的修改内容已经找不到,还是得自己重新写。

反思

  • 查找问题时不应该不看文章内容
  • 使用一个命令应该先了解其作用
  • 遇到问题不能乱,需冷静思考

总结

git reset -hard的恢复办法总的来说分为3个情况:

已commit 未commit但有add 未commit未add
git reflog 获取hash值
git reset --hard [对应的值]
git fsck --lost-found 恢复删除文件
到.git/lost-found目录寻找文件
神仙难救

误用git reset -hard 的检讨书的更多相关文章

  1. git reset soft,hard,mixed之区别深解

    GIT reset命令,似乎让人很迷惑,以至于误解,误用.但是事实上不应该如此难以理解,只要你理解到这个命令究竟在干什么. 首先我们来看几个术语 HEAD 这是当前分支版本顶端的别名,也就是在当前分支 ...

  2. git reset揭秘

    一.命令 首先,让我们来解释几个定义.   HEAD(头)     指向当前branch最顶端的一个commit,该分支上一次commit后的节点   Index(索引)     The index, ...

  3. 【Git 学习三】深入理解git reset 命令

    重置命令(git reset)是Git 最常用的命令之一,也是最危险最容易误用的命令.来看看git reset命令用法. --------------------------------------- ...

  4. git revert和git reset的区别

    git revert 是撤销某次操作,此次操作之前的commit都会被保留 git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区 具体一个例子,假设有三个commit, git s ...

  5. 代码回滚:git reset、git checkout和git revert区别和联系

    git reset.git checkout和git revert是你的Git工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文件. 因为 ...

  6. 撤销git reset soft head操作

    一不小心在eclipse的git库中执行了Reset Soft(HEAD ONLY)操作,不料界面中竟然没有找到撤销方法(于是心中五味俱全,经过一番折腾,无果还是回归Git本身),最终通过命令行,很快 ...

  7. [转]恢复 git reset -hard 的误操作

    转帖:http://hi.baidu.com/configuration/item/97fddeea252818d0eb34c964 有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 r ...

  8. git reset revert 回退回滚取消提交返回上一版本

    git reset revert 回退回滚取消提交返回上一版本 总有一天你会遇到下面的问题. (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你 ...

  9. 每天一命令 git reset

    在使用git的时候不免遇到commit的时候commit了错误的代码的时候,这时候就需要用到git的常用命令之一  reset了. reset顾名思义为重置.重置的是HEAD指针,可以使HEAD指针移 ...

随机推荐

  1. 微软要冷落windows是天方夜谭还是势在必行

    自从90年代开始,微软就统治着PC桌面市场,真正意义上地改变了世界,在很长一段时间内,Windows就和阳光.空气.水.电能一样,成为生活必需品,无处不在,又让人感觉不到其存在,正因如此,微软的市值于 ...

  2. struts 2.1.8.1的sx:datetimepicker标签出现NaN错误的原因和解决办法

     作者:Junsan.Jin 邮箱:junsanjin@gmail.com QQ:1305896503 本文原始地址:http://www.rsky.com.cn/Article/java/201 ...

  3. vue面试总结

    https://www.kancloud.cn/hanxuming/vue-iq/728305 https://segmentfault.com/a/1190000016351284 https:// ...

  4. Archlinux安装与出现的问题

    arch的安装 arch的安装主要参考官网arch wiki,基本上按照Beginners' guide的步骤就可以安装,不过这里推荐用U盘刻录的方法来安装,我尝试过用硬盘安装的办法,还是感觉U盘刻录 ...

  5. 吴裕雄--天生自然 R语言开发学习:导入数据

    2.3.6 导入 SPSS 数据 IBM SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc 包中的spss.get()函数.函数spss.get() ...

  6. Nginx笔记总结十三:nginx 正向代理

    server { listen ; location / { resolver 202.106.0.20 202.106.119.116; resolver_timeout 30s; proxy_pa ...

  7. idea快捷键-eclipse

    ctrl+shift+R 查找文件ctrl+shift+T 查找class类alt+Enter 导包alt+Shift+P 实现方法

  8. 腾讯云服务器(centos7.2)上安装MySQL

    1.到MySQL官网找到相应的版本 https://dev.mysql.com/downloads/repo/yum/ 找到下面的Linux7,即CentOS7(CentOS是Red Hat旗下的)点 ...

  9. Luogu_1280_尼克的任务

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始 ...

  10. spring boot 创建定时任务

    @Scheduled默认创建的线程是单线程,任务的执行会受到上一个任务的影响,创建定时任务也比较简单 123456789101112 @Component@Configuration //1.主要用于 ...