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

一、暂存区撤销

1、情况一:比如我在工作区修改了一个文件,并提交到了暂存区,提交了以后,现在我想撤回暂存区,但是我工作区的修改还想要

git reset HEAD    

 例如:我的1.txt原来是这样

Git基本操作(7)- git 暂存区回退详解_第1张图片

 现在我增加了一行4,并且提交到了暂存区

Git基本操作(7)- git 暂存区回退详解_第2张图片

 Git基本操作(7)- git 暂存区回退详解_第3张图片

 现在我想撤回

Git基本操作(7)- git 暂存区回退详解_第4张图片

 从现在可以看到,暂存区的修改已经被撤回了

Git基本操作(7)- git 暂存区回退详解_第5张图片

 但是我本地工作区的修改还在

2、情况二:比如我在工作区修改了一个文件,并提交到了暂存区,现在我想撤回暂存区,而且我工作区的修改也一并不想要了

git reset  --hard HEAD

  例如:我的1.txt原来是这样

Git基本操作(7)- git 暂存区回退详解_第6张图片

 现在我增加了一行4,并且提交到了暂存区

Git基本操作(7)- git 暂存区回退详解_第7张图片

 Git基本操作(7)- git 暂存区回退详解_第8张图片

 我现在开始撤回

Git基本操作(7)- git 暂存区回退详解_第9张图片

 我现在暂存区被清了

Git基本操作(7)- git 暂存区回退详解_第10张图片

1.txt中的4444也被撤回了 

3、情况三:提交暂存区后和工作区又修改的内容有冲突

例如 1.txt 如下

本来的样子是这样的

Git基本操作(7)- git 暂存区回退详解_第11张图片

 现在我修改成这样

Git基本操作(7)- git 暂存区回退详解_第12张图片我现在把他提交到暂存区

Git基本操作(7)- git 暂存区回退详解_第13张图片

现在我又在工作区修改了同一行,这回暂存区的回退就要与本地冲突了

 Git基本操作(7)- git 暂存区回退详解_第14张图片

如果我用 git reset HEAD, 那结果回会是什么样呢

 Git基本操作(7)- git 暂存区回退详解_第15张图片

 Git基本操作(7)- git 暂存区回退详解_第16张图片

没有提示冲突,git自动处理了,我最后一次的本地修改还在,但是暂存区的修改没有了,也合情合理, git reset HEAD 就是你暂存区不要了,工作区的修改还要保留

 如果我用 git reset --hard HEAD, 那结果会是什么样呢

Git基本操作(7)- git 暂存区回退详解_第17张图片 暂存区和本地的修改都没有,回到了最初始的状态

所以总结

git reset  HEAD  只撤回暂存区修改,工作区修改保留

git reset --hard HEAD  暂存区的修改和工作区的后面的修改,全都不保留

所以慎用 --hard

 

你可能感兴趣的:(Git,git,其他,数据库)