首页/开发/Git 与协作速查/git tag 过滤与排序
Git 基础与命令88 条

git tag 过滤与排序

标签查询:-l 通配过滤、-n 附带说明行、--sort 指定排序(版本自然序用 v:refname)、--contains 反查提交所属标签。

Git 与协作速查开发更新于 2026-10-13

标签查询与排序

标签查询的常用组合是:按通配过滤名称、附带说明行、指定排序键,版本号的自然序需要用 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 之前;展示版本列表时统一使用自然序才能符合直觉,脚本里尤其要注意。
反查需要完整历史,浅克隆中的结果可能不完整,判断某版本是否包含修复前先补齐历史。
带说明的标签用附带说明行的方式最省事:它同时给出标签名与说明首行,比逐个查看每个标签对象的开销小得多。
只在本地创建的标签不会出现在其他人的列表里,发现同事缺少某个标签时先确认它是否已经推送。

易错点

  • 用默认排序生成版本列表,会出现 v1.10 排在 v1.9 之前的错觉,脚本据此判断最新版本会出错
  • 把标签列表当成发布列表:平台上的发布记录与标签是两套数据,数量对不上属于正常现象
  • 浅克隆下反查结果不完整,误判某个版本里没有包含修复,结论需要先补齐历史再下
  • 在脚本里用人类可读输出做判断,格式变化就会失效,改用固定格式字段更稳

数据来源与参考

  • Git 官方文档:git-tag(--sort/--contains)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌