简单的理解三种模式:

hard reset之后,以仓库为准,仓库,暂存区和工作区保持一致,不一致的全部清除;

soft reset之后,工作区内容不变,只更新仓库内容,差异保留在index暂存区;

mixed reset之后,只更新仓库内容,index暂存区内容和仓库内容保持一致,差异保留在工作区;

reset三种模式区别和使用场景

区别:

  1. --hard:重置位置的同时,直接将 working Tree工作目录index 暂存区repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。

  2. --soft:重置位置的同时,保留working Tree工作目录index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。

  3. --mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。

使用场景:

  1. --hard:(1) 要放弃目前本地的所有改变時,即去掉所有add到暂存区的文件和工作区的文件,可以执行 git reset -hard HEAD 来强制恢复git管理的文件夹的內容及状态;(2) 真的想抛弃目标节点后的所有commit(可能觉得目标节点到原节点之间的commit提交都是错了,之前所有的commit有问题)。

  2. --soft:原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files),所以假如我们之前工作目录没有改过任何文件,也没add到暂存区,那么使用reset --soft后,我们可以直接执行 git commit 將 index暂存区中的內容提交至 repository 中。为什么要这样呢?这样做的使用场景是:假如我们想合并「当前节点」与「reset目标节点」之间不具太大意义的 commit 记录(可能是阶段性地频繁提交,就是开发一个功能的时候,改或者增加一个文件的时候就commit,这样做导致一个完整的功能可能会好多个commit点,这时假如你需要把这些commit整合成一个commit的时候)時,可以考虑使用reset --soft来让 commit 演进线图较为清晰。总而言之,可以使用--soft合并commit节点

  3. --mixed(默认):(1)使用完reset --mixed后,我們可以直接执行 git add 将這些改变果的文件內容加入 index 暂存区中,再执行 git commitIndex暂存区 中的內容提交至Repository中,这样一样可以达到合并commit节点的效果(与上面--soft合并commit节点差不多,只是多了git add添加到暂存区的操作);(2)移除所有Index暂存区中准备要提交的文件(Staged files),我们可以执行 git reset HEADUnstage 所有已列入 Index暂存区 的待提交的文件。(有时候发现add错文件到暂存区,就可以使用命令)。(3)commit提交某些错误代码,或者没有必要的文件也被commit上去,不想再修改错误再commit(因为会留下一个错误commit点),可以回退到正确的commit点上,然后所有原节点和reset节点之间差异会返回工作目录,假如有个没必要的文件的话就可以直接删除了,再commit上去就OK了。

git reset三种模式区别和使用场景(hard,soft,mixed)相关推荐

  1. vtp协议服务器配置,Cisco思科交换机VTP协议三种模式区别?

    摘要: VLAN中继协议,VTP,VLAN TRUNKING PROTOCOL,是CISCO专用协议,大多数交换机都支持该协议.VTP负责在VTP域内同步VLAN信息,这样就不必在每个交换上配置相同的 ...

  2. git reset 的三种模式的使用场景

    一.前提 参考:建议先阅读:Git Reset 三种模式 这篇文章只是我的的一个笔记 二.三种模式 git reset --soft git reset --mixed git reset --har ...

  3. Git之Reset的三种模式

    前言 使用场景:当commit的内容有错误,需要回撤到之前的某个版本时. git reset一句话概括: git-reset - Reset current HEAD to the specified ...

  4. LVS三种模式的区别及负载均衡算法

    转载自  LVS三种模式的区别及负载均衡算法 LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统,由章文嵩博士在1998年5月成立,在li ...

  5. Oracle 11g dataguard三种模式以及实时查询(Real-time query)功能设置

    之前我们讨论过<Linux Oracle 11g dataguard物理standby 配置过程>, 但是在实际过程中会遇到不同的问题,首先我们讨论下ORACLE DATAGUARD的三种 ...

  6. Tomcat三种模式及配置APR模式

    为什么80%的码农都做不了架构师?>>>    Tomcat三种模式 Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下: 这三种模式的不同之处如 ...

  7. 宠物乘机的三种模式【转】

    几天前微博用户@HUST_维维豆奶在网上控诉,他搭乘东航MU2544次航班(上海浦东-武汉)时,托运的金毛犬在天河机场被打成重伤(附1).机场方面给出了官方回应(附2与附3),并且已向事主支付了五万元 ...

  8. mysql binlog 权限_MySQL如何开启binlog?binlog三种模式的分析

    前提,创建表t,并插入数据,语句如下: CREATE TABLE `t` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `t_modified` ...

  9. oracle物理DG管理-redo数据传输,应用与三种模式

    环境http://blog.csdn.net/sunziyue/article/details/50799648基础之上 1学习配置参数 下列参数为primary 角色相关 *.db_name='or ...

最新文章

  1. Windows下Unity5x创建和打开游戏工程
  2. java人名识别_HanLP中人名识别分析(示例代码)
  3. Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略
  4. 使用docker-compose部署sentinel
  5. JQuery-学习笔记04【基础——JQuery基础案例】
  6. matlab实现二项分布
  7. 我的世界1.8.9无需正版的服务器,我的世界1period;8period;9服务器纯洁服地址 | 手游网游页游攻略大全...
  8. typedef struct
  9. 2021-04-06梦笔记
  10. 计算机高程知识点,数字测图原理与方法知识点
  11. 14种DLL注入技术
  12. 电阻式传感器原理与应用
  13. 解决office2010每次打开出现配置进度的方法
  14. 协同过滤推荐算法java_协同过滤推荐算法的原理及实现
  15. 推荐 :一小时建立数据分析平台
  16. win7如何设置wifi热点_Win7家庭版如何给文件夹设置密码?Win7文件夹加密方法
  17. 人可以活很多次,但是七年就是一辈子
  18. python实现12306自助刷票下单
  19. 腾讯QQ被盗的形式及密码保护技巧(转)
  20. smart 完成安装之前向导中断

热门文章

  1. 移动开发必知必会的六大数据统计平台(入门篇)
  2. 12.Oracle Redo重做日志管理
  3. 机器学习第三课--LWR的疑惑与想法
  4. 解决github下载慢的问题!
  5. 一篇文章读懂 Ad Network、Ad Exchange、DSP、SSP、DMP的区别?
  6. android下载文件地址,安卓迅雷下载的文件在哪里迅雷下载文件存放位置-独木成林...
  7. ERP实施设防三大雷区(转载)
  8. BZOJ 2563 阿狸和桃子的游戏 题解(贪心)
  9. MATLAB求积分函数int
  10. 做时间的朋友,必须知道收益咋算