各位看官好,git reset和checkout是git中比较常用的两种方法,今天我想来总结一下reset和checkout的原理和架构。
一、reset的原理
二、reset的三种应用
三、checkout的原理
四、checkout的应用
1、reset的原理
1.1 关于git中三个区的说明
要说明git reset的原理,首先要简单说一下git的三个区和HEAD问题。在git中一共有三个区,分别是工作区,暂存区和提交区。其三者的对应关系是这样的:
工作区通过git add添加到暂存区,而暂存区通过git commit添加到提交区,这样一个流程。
1.2 关于git中HEAD指针的问题
git中存在一个HEAD指针,即为每次提交一次HEAD指针就会向前进一位,这里要说明的是HEAD指针存在于暂存区和提交区,而不存在于工作区。也就是说在上一版的基础上,如果我们使用git add命令,那么此时HEAD指针会进入到暂存区,继续用git commit,此时会进入到提交区。
1.3 关于git reset的原理说明
那么说完了这些,我们就说一下git reset的原理。git reset的原理简单来说就是把HEAD指针回退一位。即如果你在提交区,那么你回退一位就是暂存区,如果你在暂存区,那么指针会回退到上一次的提交区。
2.1 git reset的三种使用方法
git命令中对reset命令制定了三种使用方法。分别是--soft --mixed --hard,这三种方式。
即为git reset --soft
git reset --mixed
git reset --hard
其中soft就是reset中最原始的用法,只是将HEAD指针移动到上一次。而mixed则对其又进了一步,除了将HEAD指针移动到上一次的提交,还将暂存区的内容也一并清空。hard命令则对其又进了一步,除了HEAD指针移动到上一次的提交和将暂存区的内容也一并清空外,还将工作区的内容也一并清空。即:
soft:移动指针
mixed:移动指针+清空暂存区
hard:移动指针+清空暂存区+清空工作区。
3、checkout的原理
说完了git reset,我们来说一下checkout命令,checkout的原理基础也是和HEAD有关。checkout命令就是把把当前代码更新成头指针指向的提交。
4、checkout的应用
checkout的应用有很多种,但是最常用的还是两种,第一种就是切换分支,第二种就是更新工作区。
第一种应用场景:
git checkout <branch> 这种原理就是将HEAD指针指向另一个分支,同时将其覆盖
第二种应用场景:
git checkout <file> 这种使用的前提就是头指针指向的提交与当前你所在的区域不是一个,使用该命令可以使其内容更新成上一版提交。
当然,checkout的应用有很多种,这两种只是我目前为止用过的。
总结:
这回我们说了reset的原理,应用,以及checkout的原理和应用。总结一下:
1、reset的原理就是将头指针回退到上一个。
2、其应用可以分成三个部分,soft,mixed,hard三种
3、checkout的原理就是把当前代码更新成头指针指向的提交
4、其应用有两个,第一,切换分支。第二,更新当前内容。
原文地址:https://www.cnblogs.com/songyuchen/p/12574993.html