git学习第十篇(撤销操作之reset)

本文详细介绍了Git中的三种回退命令:git reset --soft HEAD~、git reset [--mixed] HEAD~ 和 git reset --hard HEAD~。解释了每种命令在工作区、暂存区及版本库中的具体作用及变化,帮助读者更好地理解和运用Git版本回退。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此处要说的几个命令分别为:

① git reset --soft HEAD~

② git reset [--mixed] HEAD~

③ git reset --hard HEAD~

假如按照下面方式,提交了三个版本:

 

 那么此时三个工作区,暂存区,和版本库中内容分别是什么呢

准备工作做完,下面就是我们要说的重点了

如果此时想回退版本怎么办 ?

①:git reset --soft HEAD~

这个命令所做的操作可以理解为和git commit --amend操作是一样的,可以理解为撤销上一次提交的意思

本质是:在执行命令后,HEAD指针会指向上一次提交对象,并且会带着分支一起移动,这就和git checkout “分支名”实质不太一样了,checkout只是改变了HEAD指针的指向,但是分支会留在原地

我们想知道的是,在我执行完上述命令后,发生了哪些变化呢?

----:其实执行上述命令后只有HEAD发生了变化,我们理解的撤销上一次提交其实并没有真正的撤销,我们再来看看三部分区域内容:

 当我们执行完上述命令后,现在是待提交状态,这个时候你又可以重新提交了,并且提交以后效果三个区域的内容又是和刚开始一样都是v1,v2,v3。我的个人理解,这次回退,其实改变的地方是可以重新提交注释

使用git reflog命令可以看到,当我们执行git reset --soft HEAD~, 其实只是git自己给做了一次提交,并将HEAD指向了上一次提交对象,上次commit并没有真正的撤销

 ② git reset [--mixed] HEAD~

 当我们执行完上述命令后,发生了哪些变化呢?

 HEAD和暂存区都发生了变化,只有工作区没有变化

当我们执行完上述命令后,现在是待暂存状态,这个时候你又可以暂存并重新提交了,并且提交以后效果三个区域的内容又是和刚开始一样都是v1,v2,v3。我的个人理解,这次回退,其实改变的地方还是可以重新提交注释

③ git reset --hard HEAD~

执行完上述命令后又会发生那些变化呢?

我们可以看到三个区域都发生了变化,这个时候其实可以理解为回到了第二次提交结束的时候,现在目前是出于working tree clean状态,所以我们可以知道,这个命令不能随便使用的,否则会把之前所更改的记录清空,如果之前的修改还未提交,那么就找不回了,所以慎用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值