一、暂存区撤销
1、情况一:比如我在工作区修改了一个文件,并提交到了暂存区,提交了以后,现在我想撤回暂存区,但是我工作区的修改还想要
git reset HEAD
例如:我的1.txt原来是这样
现在我增加了一行4,并且提交到了暂存区
现在我想撤回
从现在可以看到,暂存区的修改已经被撤回了
但是我本地工作区的修改还在
2、情况二:比如我在工作区修改了一个文件,并提交到了暂存区,现在我想撤回暂存区,而且我工作区的修改也一并不想要了
git reset --hard HEAD
例如:我的1.txt原来是这样
现在我增加了一行4,并且提交到了暂存区
我现在开始撤回
我现在暂存区被清了
1.txt中的4444也被撤回了
3、情况三:提交暂存区后和工作区又修改的内容有冲突
例如 1.txt 如下
本来的样子是这样的
现在我修改成这样
我现在把他提交到暂存区
现在我又在工作区修改了同一行,这回暂存区的回退就要与本地冲突了
如果我用 git reset HEAD, 那结果回会是什么样呢
没有提示冲突,git自动处理了,我最后一次的本地修改还在,但是暂存区的修改没有了,也合情合理, git reset HEAD 就是你暂存区不要了,工作区的修改还要保留
如果我用 git reset --hard HEAD, 那结果会是什么样呢
暂存区和本地的修改都没有,回到了最初始的状态
所以总结
git reset HEAD 只撤回暂存区修改,工作区修改保留
git reset --hard HEAD 暂存区的修改和工作区的后面的修改,全都不保留
所以慎用 --hard