Git基本操作(7)- git 暂存区回退详解

一、暂存区撤销

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

 


版权声明:本文为weixin_43258703原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。