1 标签, git tag tag_name SHA
-
本质: 在某次commit 上打上标签tag_name ,标签在代码库中起着“锚点”的作用。 注意: commit 由 SHA、缺省HEAD(当前) 指定。
-
命令:
$ git tag V0 8d59682bed ## 打上版本标签
$ git log V0 ## 直接操控V0 ,等价于 git log 8d59682be
- 补充:Git Describe 能帮你在提交历史中移动了多次以后找到方向;当你用 git bisect(一个查找产生 Bug 的提交记录的指令)找到某个提交记录时,或者是当你坐在你那刚刚度假回来的同事的电脑前时, 可能会用到这个命令。
2. git describe
git describe 的语法是:
可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会以你目前所检出的位置(HEAD)。
它输出的结果是这样的:
<tag>_<numCommits>_g<hash>
tag 表示的是离 ref 最近的标签, numCommits 是表示这个 ref 与 tag 相差有多少个提交记录, hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位。
当 ref 提交记录上有某个标签时,则只输出标签名称
3. 选择父提交记录 ^ ,有多个父亲时候,后面跟数字表示第几次提交
-
本质: 操作符 ^ 与 ~ 符一样,后面也可以跟一个数字。 但是该操作符后面的数字与 ~ 后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的某个父提交。还记得前面提到过的一个合并提交有两个父提交吧,所以遇到这样的节点时该选择哪条路径就不是很清晰了。
-
命令:操作符 ^ 与 ~ 符一样,后面也可以跟一个数字。 含义不同
Git 默认选择合并提交的“第一个”父提交,在操作符 ^ 后跟一个数字可以改变这一默认行为。 -
示例 1:
$ git checkout master^ ## HEAD 在当前分支,当前位置第一个父亲记录
执行前,图3.1
执行后,图3.2
- 示例2:
$ git checkout master^2 ## HEAD 在当前分支,当前位置第2个父亲记录
执行前,如图3.1
执行后,图3.3
- 示例3: 综合示例
$ git checkout HEAD~ ## HEAD 从当前位置C7 向上移动1个记录, 到 C6
$ git checkout HEAD^2 ## HEAD 从当前位置C6 移动到第2个父亲记录,到 C5
$ git checkout HEAD~2 ## HEAD 从当前位置C5 向上移动2个记录, 到 C3
上述命令,等价于以下命令
$ git checkout HEAD~^2~2