[Git] 演示回退命令reset的三种模式soft、hard、mixed详解

前言


目录

[git reset](#git reset)

soft

hard

mixed

[git reset --soft commitId](#git reset --soft commitId)

[git reset --hard commitId](#git reset --hard commitId)

[git reset --mixed commitId](#git reset --mixed commitId)


git reset

soft
  • 移动本地库HEAD指针
hard
  • 移动本地库HEAD指针

  • 重置暂存区

  • 重置工作区

mixed
  • 移动本地库HEAD指针
  • 重置暂存区

执行reset命令后还存在文件的区:

|-----------|-----|-----|-----|
| | 工作区 | 暂存区 | 版本库 |
| soft | √ | √ | × |
| mixed(默认) | √ | × | × |
| hard | × | × | × |

HEAD指向版本号,修改HEAD的位置,就是将HEAD指向的位置改变为之前存在的某个版本,回退到之前的某个版本,且之后的版本不需要了

重新在另外一个本地仓库演示,创建文件1、2、3、4、5

将5个文件放到暂存区,版本库,推送到远程仓库(因为1.txt已经提前提交了,所以没有再提交)

可以将暂存区文件一起提交到版本库,但是这里选择分别提交到版本库是为了加上备注信息,方便等会演示

远程仓库中

查看日志,得到版本信息

版本库就是本地仓库,版本号用commitId表示,日志信息中commit后的字符串就是版本号,接下来对三个命令分别进行演示

git reset --soft commitId

这里回到提交4.txt的版本

查看日志,提交文件5.txt的日志不在了,本地仓库中的这个操作被删除了

推送到远程仓库

发现报错,这是因为刚才执行了reset命令,HEAD现在指向的版本比远程仓库的版本更久,现在远程仓库的才是新版本,所以会出现报错

执行命令git push -f 强制推送即可

在远程仓库中看到5.txt文件不在了

查看状态,看到暂存区还有文件5.txt

在文件目录中看到5.txt还在,说明没有改变工作区

由以上得到soft影响版本库,不影响工作区和暂存区

git reset --hard commitId

执行命令,comitId选用3.txt的版本号,提示信息显示当前HEAD指向了3.txt

推送到远程仓库

在远程仓库中看到4.txt已经不在了

查看日志

查看状态,跟刚才不一样,没有要提交的文件,说明暂存区没有文件4.txt

在文件目录中也没有4.txt文件,工作区的文件也被删除了

由以上得到hard影响版本库、工作区和暂存区

git reset --mixed commitId

执行命令,comitId选用2.txt的版本号

推送到远程仓库

在远程仓库中看到3.txt不在了

查看日志,3.txt记录被删除

查看状态,文件3.txt等待提交,说明3.txt在暂存区

查看文件目录,3.txt在工作区

由以上得到mixed影响版本库、暂存区,不影响工作区

如果不加参数直接使用git reset commitId默认mixed

执行reset命令后还存在文件的区:

|-----------|-----|-----|-----|
| | 工作区 | 暂存区 | 版本库 |
| soft | √ | √ | × |
| mixed(默认) | √ | × | × |
| hard | × | × | × |

相关推荐
墨白曦煜7 小时前
穿透 IDE 的障眼法:Git 四大工作区与核心数据流转解析
ide·git
idealzouhu9 小时前
深入 Git 账户模型:从提交身份到 SSH 多账户隔离的完整实践
git·ssh
是2的10次方啊9 小时前
误推 master 该 revert 还是 reset?撤销与补 MR 流程
git
菠萝加点糖1 天前
Git 删除远程文件、本地保留并取消跟踪
git
理智.6291 天前
Git 工具使用之项目版本回退与修改备份:stash、reset、reflog 常用指令详解
git·gitee·github
妙码生花1 天前
GIT 提交规范
git
云雀衔光1 天前
多个 MCP Server 怎么编排:数据库 / Redis / Git / 飞书一把梭
java·数据库·人工智能·redis·git·语言模型·飞书
Java后端的Ai之路1 天前
Git pull弹出vim编辑器完整排查指南
开发语言·人工智能·git·编辑器·vim
云泽8082 天前
Git 版本控制系统(下):从 .git 目录结构到冲突解决机制详解
大数据·git·elasticsearch
麻辣布丁2 天前
Git冲突原因与解决方法全解
大数据·git·elasticsearch