标签查询与排序
标签查询的常用组合是:按通配过滤名称、附带说明行、指定排序键,版本号的自然序需要用 v:refname;反查用 --contains,可以回答「某个提交进了哪些标签」,这是线上问题回溯时最实用的一条命令。
基本信息
| 过滤名称 | git tag -l 'v2.*' |
|---|---|
| 显示说明 | -n 或 -n5,附带标签说明的前若干行 |
| 排序 | --sort=-v:refname 按版本号自然序倒排 |
| 反查标签 | git tag --contains <提交> 列出包含该提交的标签 |
| 自定义输出 | --format 指定字段,便于脚本处理 |
典型使用场景
- 发布前列出同一系列的已有版本,避免版本号重复
- 排查某个修复究竟进了哪些版本
- 生成下一个待发布的版本号
- 按打标签时间浏览最近的发布记录
- 脚本里判断目标标签是否已经存在
常用示例
常用示例
git tag -l 'v2.*' # 按通配过滤
git tag -n1 -l 'v1.0*' # 附带说明首行
git tag --sort=-v:refname | head # 版本号自然序倒排
git tag --contains <提交哈希> # 反查该提交所属的标签
git tag --sort=-taggerdate --format='%(refname:short) %(taggerdate:short)' | head排序键对照
| 排序键 | 效果 |
|---|---|
| refname | 按引用名字符串排序,v1.10 会排在 v1.9 之前 |
| -v:refname | 按版本号自然序,倒序排列 |
| taggerdate | 按打标签的时间排序 |
| creatordate | 按标签对象或指向提交的时间排序 |
默认按引用名字符串排序,v1.10 会排在 v1.9 之前;展示版本列表时统一使用自然序才能符合直觉,脚本里尤其要注意。
反查需要完整历史,浅克隆中的结果可能不完整,判断某版本是否包含修复前先补齐历史。
带说明的标签用附带说明行的方式最省事:它同时给出标签名与说明首行,比逐个查看每个标签对象的开销小得多。
只在本地创建的标签不会出现在其他人的列表里,发现同事缺少某个标签时先确认它是否已经推送。