如何通过Azure DevOps CLI获取代码仓库标签的日期
Azure DevOps CLI获取标签对应日期的实现方式
az repos ref list 命令返回的标签引用列表默认不携带时间字段,不需要依赖本地Git仓库环境,通过以下两种方式即可获取需要的标签/对应提交日期:
- 基于标签关联的提交ID查询提交时间
拿到的标签objectId就是标签指向的Git提交哈希,你的场景下标签创建时间和提交时间基本一致,直接调用CLI内置的提交查询命令即可拿到时间字段:
需要批量导出所有标签和对应日期时,写简单的Shell/PowerShell循环遍历标签列表批量调用即可,全程不需要本地克隆仓库。# 批量拉取所有标签的名称和对应提交ID az repos ref list -p <项目名> -r <仓库名> --filter tags --query "[].{tagRef:name, commitId:objectId}" -o table # 传入单个提交ID查询详情,返回结果中 committer.date 字段就是对应时间 az repos commit show --repository <仓库名> --commit-id <objectId值> --project <项目名> - 针对带注解标签查询原生标签创建时间
如果使用的是带注解标签(annotated tag),标签本身存储了独立的创建人、创建时间元数据,可以直接通过Azure DevOps内置的REST接口查询:
接口返回结果中的# 从ref路径提取纯标签名,例如将 refs/tags/v1.2.3 处理为 v1.2.3 $pureTagName = "refs/tags/1.0.0-tag-name".Substring(10) az rest --method get --uri "https://dev.azure.com/<组织名>/<项目名>/_apis/git/repositories/<仓库名>/annotatedtags/$pureTagName?api-version=7.1-preview.1"taggedBy.date字段就是标签的实际创建时间,同时也会返回标签关联的提交ID等完整信息。
补充说明:轻量标签本身不存储独立的创建时间元数据,本质只是提交的固定引用,这类标签直接取对应提交的提交人时间即可,和标签实际创建时间的差异在绝大多数场景下可以忽略。
内容的提问来源于stack exchange,提问作者Peter Kronenberg
相关产品推荐
相关产品推荐

