Git reset的三种模式 傻傻分不清楚
Posted 高、远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git reset的三种模式 傻傻分不清楚相关的知识,希望对你有一定的参考价值。
文章目录
【1】关于Git reset有三种模式
- ①
soft
:将版本回滚,工作区不动,暂存区=原来的+回滚后和回滚前的版本差异- ②
mixed
:将版本回滚,回滚到了所有 git add 和 git commit 的命令执行之前。暂存区变为空,全部到了工作区- ③
hard
:将版本回滚,将所有工作区和暂存区的文件修改全部清空,是真正的覆盖,不能找回了。
我在使用的时候总是搞不清他们之间到底怎么使用,下面我来说一下
【2】实例手把手讲解
2.1 首先我们新建一个项目
2.2 然后创建Git进行管理
2.3 两次提交方便等会回滚
先初始化提交
可以看到我们提交的信息了
新建分支
添加新文件,然后加入工作区
commit 1
再操作一次。commit 2
然后我们新建一个Test3,但是只存在工作区,不将他加到暂存区中。
看到Test3是变红的就对了,表示没有被git追踪,没有加到缓存区中。
2.4 soft模式讲解:
目前的状态:maser在init上,HEAD指针在dev开发分支上;工作区中有一个Test3没有加到缓存中
打开终端git reset --soft HEAD~
回退上个版本
发现版本真的回退了,检查工作区和缓存区。
验证了这句话:将版本回滚,工作区不动,暂存区=原来的+回滚后和回滚前的版本差异
暂存区原来的为空+回滚差异那不就是Test2文件吗?ok,soft模式我们验证完了,再来看mixed。
2.5 mixed模式讲解:
我们将文件恢复,reflog,然后reset回去,这里就不演示了。
git reset HEAD~
版本回退了,然后我们看工作区和暂存区。
我们发现暂存区被清空了,没有文件,回滚差别文件放在工作区了,工作区=原来的+回滚差别;
将版本回滚,回滚到了所有 git add 和 git commit 的命令执行之前。暂存区变为空,全部到了工作区
2.6 hard模式讲解:
同样先恢复文件,并且添加一些代码到暂存区
git reset --hard HEAD~
已经回滚,这个不用说,reset本来就用来回滚。
暂存区没了,
Test2也没了
以上是关于Git reset的三种模式 傻傻分不清楚的主要内容,如果未能解决你的问题,请参考以下文章