误用git reset -hard 的检讨书
误用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 的检讨书的更多相关文章
- git reset soft,hard,mixed之区别深解
GIT reset命令,似乎让人很迷惑,以至于误解,误用.但是事实上不应该如此难以理解,只要你理解到这个命令究竟在干什么. 首先我们来看几个术语 HEAD 这是当前分支版本顶端的别名,也就是在当前分支 ...
- git reset揭秘
一.命令 首先,让我们来解释几个定义. HEAD(头) 指向当前branch最顶端的一个commit,该分支上一次commit后的节点 Index(索引) The index, ...
- 【Git 学习三】深入理解git reset 命令
重置命令(git reset)是Git 最常用的命令之一,也是最危险最容易误用的命令.来看看git reset命令用法. --------------------------------------- ...
- git revert和git reset的区别
git revert 是撤销某次操作,此次操作之前的commit都会被保留 git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区 具体一个例子,假设有三个commit, git s ...
- 代码回滚:git reset、git checkout和git revert区别和联系
git reset.git checkout和git revert是你的Git工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文件. 因为 ...
- 撤销git reset soft head操作
一不小心在eclipse的git库中执行了Reset Soft(HEAD ONLY)操作,不料界面中竟然没有找到撤销方法(于是心中五味俱全,经过一番折腾,无果还是回归Git本身),最终通过命令行,很快 ...
- [转]恢复 git reset -hard 的误操作
转帖:http://hi.baidu.com/configuration/item/97fddeea252818d0eb34c964 有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 r ...
- git reset revert 回退回滚取消提交返回上一版本
git reset revert 回退回滚取消提交返回上一版本 总有一天你会遇到下面的问题. (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你 ...
- 每天一命令 git reset
在使用git的时候不免遇到commit的时候commit了错误的代码的时候,这时候就需要用到git的常用命令之一 reset了. reset顾名思义为重置.重置的是HEAD指针,可以使HEAD指针移 ...
随机推荐
- 转载【docker】CMD ENTRYPOINT 的使用方法
原文:https://blog.csdn.net/u010900754/article/details/78526443
- GitHub之初始化
1.github上新建repository. 2.本地 mkdir git-init-demo. 3.cd git-init-demo. 4.git clone https://github.com/ ...
- 移动端Video标签踩坑记录
需求 用户能在手机上上传视频并预览. 问题 上传完成后安卓下封面展示正常,ios下封面空白.如下图所示: 利用canvas截取视频第一帧发现,ios下截取到的第一帧一直是空白图片, 安卓正常. 后端利 ...
- flink分层 api
最底层的processFunction 功能强大,使用复杂 中间层的DataSet api map reduce ...一些基本运算api 中上层的tableAPI 最上层 SQL 两个相似,只是写法 ...
- 赫夫曼解码(day17)
思路: 传入map(字节与对应字节出现的次数)和最后生成的要传送的字节.将他们先转换成对应的二进制字节,再转换成原来的字符串. 代码: 12345678910111213141516171819202 ...
- 吴裕雄--天生自然 R语言开发学习:回归(续一)
#------------------------------------------------------------# # R in Action (2nd ed): Chapter 8 # # ...
- Jenkins之邮件通知
Jenkins默认有一个邮件通知功能,但功能比较单一,能自定义的东西很少,一般使用Extended E-mail Notification插件来发送邮件,EXT Email插件功能比较多,但设置也比较 ...
- 红灯区:DevOps 建设的思考和实践
点击关注"有赞coder" 获取更多技术干货哦- 作者:费解 团队:效能改进 背景 众所周知,在丰田精益生产中,核心观念包含对人的尊重.消除浪费.持续改善,只有这样,企业才能保持良 ...
- Andrew's Blog / 《Network Programming with Go》学习笔记
第一章: Architecture(体系结构) Protocol Layers(协议层) ISO OSI Protocol 每层的功能: 网络层提供交换及路由技术 传输层提供了终端系统之间的数据透明传 ...
- MyEclipse下Spring+Hibernate整合
目前,SSH(Struts+Spring+Hibernate)是Web开发的一种常用框架组合,Struts实现了MVC,Hibernate实现了关系对象映射,Spring实现了基于Bean的配置管理. ...