git reset的回退参数hard、soft和mixed

git reset的回退参数hard、soft和mixed

想要git reset命令回退到项目的某个commit版本,而有hard、soft、mixed三个参数可供选择。下面先给结论:

摘自链接

reset三种模式区别和使用场景:
1、–hard: 会将项目文件目录及commit记录都回退到目标commit。适用于需要修改项目目录的情况,而另外两个配置的项目文件是不会修改的。

2、 –soft: 保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致。适用于需要将多个commit合并简化成一个commit的情况。

3、 –mixed(默认) 重置位置的同时,只保留Working Tree工作目录(项目文件)的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致。适用于移除所有Index暂存区中准备要提交的文件(Staged files),我们可以执行 git reset HEAD 来 Unstage 所有已列入 Index暂存区 的待提交的文件。(有时候发现add错文件到暂存区,就可以使用命令)。

原理:

  • Working Tree 当前的工作区域
  • Index/Stage 暂存区域,和git stash命令暂存的地方不一样。使用git add xx,就可以将xx添加近Stage里面
  • Repository 提交的历史,即使用git commit提交后的结果

在这里插入图片描述
文件存入Repository流程
在这里插入图片描述
文件存入Repository流程:
1、刚开始 working tree 、 index 与 repository(HEAD)里面的內容都是一致的
在这里插入图片描述
2、当git管理的文件夹里面的内容出现改变后,此時 working tree 的內容就会跟 index 及 repository(HEAD)的不一致,而Git知道是哪些文件(Tracked File)被改动过,直接将文件状态设置为 modified (Unstaged files)。
在这里插入图片描述
3、当我們执行 git add 后,会将这些改变的文件內容加入 index 中 (Staged files),所以此时working tree跟index的內容是一致的,但他们与repository(HEAD)內容不一致。
在这里插入图片描述
4、接着执行 git commit 後,將Git索引中所有改变的文件內容提交至 Repository 中,建立出新的 commit 节点(HEAD)后, working tree 、 index 與与repository(HEAD)区域的内容 又会保持一致。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值