标签设置

参考:2.6 Git 基础 - 打标签

gitlog设置的基础上添加了标签设置,其目的是标识重要的提交记录(比如标识发布版本)

下面以opencv版本库为例

标签分类

标签分为两种

  1. 注解标签(annotated tag)
  2. 命名标签(named tag)

注解标签用于版本管理,命名标签用于私有或者临时标注。注解标签包含创建日期、标签名、e-mail、标签信息和可选的GPG签名

命名标签仅包含标签名,所以称为轻量级标签(lightweight tag

创建标签

常用参数如下:

  1. -a, --annotate:生成一个未签名的注解标签对象
  2. -s, --sign:生成一个GPG签名的标签,使用默认e-mail地址作为键
  3. -u <keyid>, --local-user=<keyid>:生成一个GPG签名的标签,使用给定的键
  4. -m <msg>, --message=<msg>:添加标签消息
  5. -F <file>, --file=<file>:带有标签消息的文件

注解标签

使用上述参数-a/-s/-u生成的标签称.git/refs/tags标签,注解标签必须添加消息,可以使用参数-m或者-F,否则会打开一个编辑器

$ git tag -a v1.1 -m "添加一个注解标签"

命名标签

不使用任何参数,直接添加标签名的就是命名标签

$  git tag v1.1

给过去提交记录创建标签

默认给当前记录创建标签,还可以给过去记录创建标签

查看记录

$ git log --pretty=oneline
9e1b1e5389237c2b9f6c7b9d7715d9836c0a5de1 OpenCV 3.4.2
a0baae8a559d31c22ae08976b41cc99e046ba52b Merge pull request #11875 from dkurt:dnn_fix_reshape
9a66331984c5b0f0a71d6208a8237fc410ae923e Merge pull request #11882 from alalek:videoio_vfw_lower_priority
...
...

打标签时指定提交签名(头几位就行了)

$ git tag v0.3 0660c1108f969a -a -m "给过去提交记录打标签"

查看标签

查看所有标签

$ git tag
2.2
...
...
4.0.1
4.0.1-openvino

查看指定系列标签,使用参数-l

# 列出4.x版本
$ git tag -l 4.*
4.0.0
4.0.0-alpha
4.0.0-beta
4.0.0-openvino
4.0.0-rc
4.0.1
4.0.1-openvino

查看某一标签信息

$ git show 标签名
# 对于注解标签而言
$ git show 4.0.0
tag 4.0.0                                                  # 标签名
Tagger: Alexander Alekhin <alexander.a.alekhin@gmail.com>  # 标签者
Date:   Sun Nov 18 09:19:48 2018 +0000                     # 标签日期

OpenCV 4.0.0                                               # 标签信息
...
...
# 对于命名标签而言
$ git show v1.1                                            # 仅显示提交记录
commit a92571f31ddc7ea959b99e129f6c4705a404c36b
Author: zhujian <505169307@qq.com>
Date:   Thu Feb 28 20:37:01 2019 +0800

共享标签

github利用标签进行github release的发布

但是默认情况下不会传输标签到远程托管服务器,需要单独显式推送

$ git push origin v1.0
# 或者全部推送
$ git push origin --tags

文件解析

创建的标签在.git/refs/tags文件夹下

删除标签

本地删除

使用参数-d来删除标签

$ git tag -d v1.1
Deleted tag 'v1.1' (was a92571f)

远程删除

同样需要单独显式删除远程标签

# 删除版本v1.1
$ git push origin :refs/tags/v1.1

切换标签

切换到指定标签,创建分支同时指定标签名

# 利用标签内容创建分支,并切换到分支
$ git checkout -b 分支名 标签名