虽然git 诞生距今已有12 年之久,网上各种关于git 的介绍文章数不胜数,但是依然有很多人(包括我自己在内)对于它的功能不能完全掌握。以下的介绍只是基于我个人对于git 的理解,并且可能生编硬造了一些不完全符合git 说法的词语。目的只是为了让git 通俗化,使初学者也能大概了解如何快速上手git。同时,下面所有讨论,我们都假设只使用一个分支,也就是主分支master 的情况,虽然这种作法并不符合git 规范,但是现实情况中绝大部分用户是直分支上进行工作的,所以在这里我们不去弓|入更加复杂的各种分支的情况,也不涉接在master及标签tag 的操作,只讲在最简单的主分支上如何回退。
基本概念
3个步骤
正常情况下,我们的工作流就是3 个步骤,对应上图中的3 个箭头线:
4个区
5种状态
检查修改
了解了基本概念之后,我们来谈一谈犯错误之后如何撤销的问题。首先,我们要了解如何检查这 3个步骤当中每一个步骤修改了什么,然后才好判断有没有修改成功。检查修改的二级命令都相同,都是 diff,只是参数有所不同。
已修改,未暂存
我们在文件开头的第 2行胡乱加了 4个数字 1234,存盘,这时文件进入了 已修改 状态,但是还没有进入 暂存区,我们运行 git diff,结果如下:
git diff的结果告诉我们哪些文件已经做了哪些修改。
已暂存,未提交
已提交,未推送
撤销修改
已暂存,未提交
已提交,未推送
总结
以上 4 种状态的撤销我们都用到了同一个命令 git reset --hard ,前 2 种状态的用法甚至完全一样,所以只要掌握了 git reset --hard 这个命令的用法,从此你再也不用担心提交错误了。
更多参考
独孤求败:Git中的各种后悔药
一个程序员学习平台分享给你们,让你在实践中积累经验掌握原理。主要方向是JAVA工程师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进BAT但是有担心面试不过的,可以加我的Java学习交流群:282711949。
注:加群要求
1、大学学习的是Java相关专业,毕业后面试受挫,找不到对口工作可以
2、在公司待久了,现在过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的
3、参加过线下培训后,知识点掌握不够深刻,就业困难,想继续深造
4、已经在Java相关部门上班的在职人员,对自身职业规划不清晰,混日子的
5、有一定的C语言基础,接触过java开发,想转行的
小号勿扰,不喜勿加