git reset 三种形式

1. git reset --soft <commit id>

        <commit id> 可以不写,默认为回退最近的一次提交。修改的文件变成已经add的状态。

2. git reset --mixed <commit id>

         <commit id> 可以不写,默认为回退最近的一次提交。修改的文件变成没有add的状态。这个命令等同于 git reset <commit id>

3. git reset --hard <commit id>

         <commit id> 可以不写,默认为回退最近的一次提交。修改的文件消失。

### Git中`git reset`命令的四种模式 #### 软重置 (Soft) 软重置仅会移动当前分支指向的位置(即HEAD),而不会修改暂存区或工作目录中的任何内容。这意味着如果执行了此操作,则之前的提交记录会被取消,但所有改动仍然保存在暂存区内等待下一次提交[^4]。 ```bash $ git reset --soft HEAD~1 ``` 这条命令将会把最新的一个提交撤消掉,并且将那些被撤销的变更重新加入到暂存区域里去。 #### 混合重置 (Mixed, 默认选项) 混合重置不仅改变了HEAD指针位置,还将之前处于已暂存状态下的文件恢复成未暂存的状态;不过它并不会影响实际的工作树——也就是说,在磁盘上的文件保持不变。 ```bash $ git reset --mixed HEAD~1 ``` 上述指令会使最近的一次提交消失不见,同时让原本已经准备好的更改回到待处理阶段。 #### 硬重置 (Hard) 硬重置是最激进的一种形式,除了像其他两种情况那样调整HEAD外,还会强行同步本地副本至指定版本处,覆盖掉现有的工作拷贝里的数据。因此一旦选择了这种方式来重设项目历史,那么除非事先做了备份否则就再也无法找回丢失的信息了。 ```bash $ git reset --hard HEAD~1 ``` 通过运行这段脚本可以彻底抹除最新提交所带来的变化并返回前一版源码状况。 #### 保留工作目录重置 (Keep) 这种类型的重置行为介于`--mixed`和`--hard`之间:虽然也会改变HEAD所指示的地方,但它既不清理索引也不破坏用户空间内的资源。然而值得注意的是当尝试应用此类转换时若存在尚未追踪的新文档或是已被删除却仍存在于缓存表单之中条目的话则会发生错误提示因为它们的存在违反了预期条件。 ```bash $ git reset --keep HEAD~1 ``` 以上就是关于Git内建工具之一—Reset功能所提供的四个不同级别的介绍以及相应的应用场景实例解析。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心脏dance

如果解决了您的疑惑,谢谢打赏呦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值