列出标签
在 Git 中列出已有的标签是非常简单直观的。 只需要输入 git tag
:
$ git tag
v0.1
v1.3
使用特定的模式查找标签,模糊匹配:
$ git tag -l 'v1.8.5*'
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5
创建标签
Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。
附注标签:
创建一个附注标签最简单的方式是当你在运行tag
命令时指定
-a
选项:
$ git tag -a v1.4 -m 'my version 1.4'
-m
选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息,Git 会运行编辑器要求你输入信息。
通过使用 git show
命令可以看到打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息;
轻量标签:
轻量标签本质上是将提交校验和存储到一个文件中 - 没有保存任何其他信息
创建轻量标签,不需要使用 -a
、-s
或 -m
选项,只需要提供标签名字:
$ git tag v1.4-lw
git show 轻量标签名
,你不会看到额外的标签信息。 命令只会显示出提交信息
补标签:
要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和):
$ git tag -a v1.2 9fceb02
(
9fceb02
这玩意就是通过$ git log --pretty=online命令看到的提交记录里前面对应的验证,输入一部分就可)
共享标签
使用带有 --tags
选项的 git push
命令。 这将会把所有不在远程仓库服务器上的标签全部传送到那里:
$ git push origin --tags
默认情况下,git push
命令并不会传送标签到远程仓库服务器上。
在创建完标签后你必须显式地推送标签到共享服务器上
这个过程就像共享远程分支一样 - 你可以运行 git push origin [tagname]
。
$ git push origin v1.5
检出标签
在 Git 中你并不能真的检出一个标签,因为它们并不能像分支一样来回移动。 如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用 git checkout -b [branchname] [tagname]
在特定的标签上创建一个新分支:
$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'
当然,如果在这之后又进行了一次提交,version2
分支会因为改动向前移动了,那么 version2
分支就会和 v2.0.0
标签稍微有些不同,这时就应该当心了。
感觉git知识开始深奥了。。。向前移动?指针存储?