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

铁佛  金牌会员 | 2024-11-20 04:49:39 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 822|帖子 822|积分 2466

 媒介


目录
git reset
soft
hard
mixed
git reset --soft commitId
git reset --hard 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×××

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表