git寻根时,如何区分^和~所指代的具体版本差异?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2707个文字,预计阅读时间需要11分钟。
一. 引用在git操作中,我们可以使用`checkout`命令检查出一个特定状态下的文件,也可以使用`reset`命令将状态重置到某个状态。这里所说的某个状态实际上对应的是一个提交(commit)。我们可以将一个特定的提交(g)重置到当前分支。
一. 引子
在git操作中,我们可以使用checkout命令检出某个状态下文件,也可以使用reset命令重置到某个状态,这里所说的“某个状态”其实对应的就是一个提交(commit).
我们可以把一个git仓库想象成一棵树,每个commit就是树上的一个节点。家家都有一本自己的祖谱。祖谱记录了一个家族的生命史,它不仅记录着该家族的来源、迁徙的轨迹,还包罗了该家族生息、繁衍、婚姻、文化、族规、家约等历史文化的全过程。类似的,每个git仓库都有一本自己的祖谱,仓库中commit ID的繁衍,HEAD指针的迁徙,分支的增加、更新,同样的记录着一个仓库从无到有的点点滴滴。
在git中,我们其实可以通过^和~来定位某个具体的commit,而不用每次都去敲繁琐的hash值。为了便于大家理解,先把结论放在前面:
- “^”代表父提交,当一个提交有多个父提交时,可以通过在”^”后面跟上一个数字,表示第几个父提交,”^”相当于”^1”.
- ~<n>相当于连续的<n>个”^”.
- checkout只会移动HEAD指针,reset会改变HEAD的引用值。
使用git log –graph 命令,可以查看自己仓库的当前分支提交ID的树状图,如下图所示。
本文共计2707个文字,预计阅读时间需要11分钟。
一. 引用在git操作中,我们可以使用`checkout`命令检查出一个特定状态下的文件,也可以使用`reset`命令将状态重置到某个状态。这里所说的某个状态实际上对应的是一个提交(commit)。我们可以将一个特定的提交(g)重置到当前分支。
一. 引子
在git操作中,我们可以使用checkout命令检出某个状态下文件,也可以使用reset命令重置到某个状态,这里所说的“某个状态”其实对应的就是一个提交(commit).
我们可以把一个git仓库想象成一棵树,每个commit就是树上的一个节点。家家都有一本自己的祖谱。祖谱记录了一个家族的生命史,它不仅记录着该家族的来源、迁徙的轨迹,还包罗了该家族生息、繁衍、婚姻、文化、族规、家约等历史文化的全过程。类似的,每个git仓库都有一本自己的祖谱,仓库中commit ID的繁衍,HEAD指针的迁徙,分支的增加、更新,同样的记录着一个仓库从无到有的点点滴滴。
在git中,我们其实可以通过^和~来定位某个具体的commit,而不用每次都去敲繁琐的hash值。为了便于大家理解,先把结论放在前面:
- “^”代表父提交,当一个提交有多个父提交时,可以通过在”^”后面跟上一个数字,表示第几个父提交,”^”相当于”^1”.
- ~<n>相当于连续的<n>个”^”.
- checkout只会移动HEAD指针,reset会改变HEAD的引用值。
使用git log –graph 命令,可以查看自己仓库的当前分支提交ID的树状图,如下图所示。

