标签,给各类对象上添加标签,方便查找。通常是给commit上添加标签。
标签对象的增,删,查(详细信息),检索。
官网地址:https://git-scm.com/docs/git-tag
1、新增
格式如下:
git tag [-a | -s | -u <keyId>] [-f] [-m <msg> | -F <file>] [-e] <tagname> [<commit> | <object>]
元信息:
-m:tag的日志信息
-F<file>:日志信息从文件中读取,不常用,略。
tagName:标签的名称
<commit> | object:tag表示的对象,通常为commmit对象。用户通常不会接触到tree和blob对象
注解 & 签名:
-a, annotate:给tag添加注解,即需要添加-m选项,默认值。
-s, signature:给tag添加签名。
-u <keyid>:给tag添加GPG签名。
常规选项:
-f, force,强制,若存在同名,则覆盖
-e:全称为edit,开启编辑模式
创建之后,可以在./git/refs/tag目录下查看到tag对象,文件名称为tag名称。
示例:git tag -f -m “初始化提交” first_commit HEAD
2、查询
格式如下:
git tag -v [--format=format] <tagname>
查询所有tag,执行git tag [–-list(-l) | -n]。
根据条件查询tag, 执行git tag –-list(-l) | grep <some condition>
查询单个tag的详细信息, 执行 git tag -v <tagname>,执行的结果:
object c3ba4209641fa2539a14fb3487a302a34f5c4270 type commit tag first_commit tagger WorldInNet <[email protected]> 1592489554 +0800 初始化提交
Object表示tag关联的对象ID, 第二行表示关联的对象类型为Commit,第三行显示tag的名称,第四行显示创建tag的用户名和邮箱,以及创建时间。最后一行显示tag的日志信息。
3、检索
格式为:
git tag [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>][--points-at <object>]
[--column[=<options>] | --no-column] [--create-reflog] [--sort=<key>] [--format=<format>] [--[no-]merged [<commit>]] [<pattern>…]
根据commitID查询tag,执行git tag –-contains commitID,会显示指向commitID的tag列表,--no-contains正好相反。
根据CommitID查询tag,执行git tag –-points-at commitID,显示指向commitId的tag列表。
根据提交历史是否可达查询tag,执行git tag –-merged commitID,会显示执行当前commitID所有可达提交的tag列表,--no-merged正好相反。若只有一个分支,都是可达的,会列出所有的tag。
根据tag的名称查询tag,执行git tag -l <pattern>,pattern可以是tag的名称,也可以是正则表达式。例如*_tag,会查询出所有以_tag后缀的tag列表。
条件:
--[no-]contains <commit>:是否包含commit对应的tag
--points-at <object>:当前object对应的tag列表
--[no-]merged :是否包含分支合并产生的commit对象对应的tag
<pattern>:tag名称的格式
显示格式:
-n:最多显示日志信息的n行
-column, --no-column:表格方式展示tag列表,需要column.tag配置项,若无,不会有效果。tag存在日志信息时,也无效果。
--sort=<key>,排序,key值参考tag.sort配置项。
4、删除
删除tag的格式如下:
git tag -d <tagname>
-d全称为delete,表示删除的含义。较为简单。当tag名称不存在时,报错,提示信息为”tag xx not found”
示例:git tag -d first_commit。