标签设置¶
git
在log
设置的基础上添加了标签设置,其目的是标识重要的提交记录(比如标识发布版本)
下面以opencv版本库为例
标签分类¶
标签分为两种
- 注解标签(
annotated tag
) - 命名标签(
named tag
)
注解标签用于版本管理,命名标签用于私有或者临时标注。注解标签包含创建日期、标签名、e-mail
、标签信息和可选的GPG
签名
命名标签仅包含标签名,所以称为轻量级标签(lightweight tag
)
创建标签¶
常用参数如下:
-a, --annotate
:生成一个未签名的注解标签对象-s, --sign
:生成一个GPG签名的标签,使用默认e-mail
地址作为键-u <keyid>, --local-user=<keyid>
:生成一个GPG
签名的标签,使用给定的键-m <msg>, --message=<msg>
:添加标签消息-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 分支名 标签名