You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Rest API提取Azure DevOps仓库中的最新标签?

解决Azure Git仓库最新标签获取问题

你当前的问题是用sort_by(.name)按字符串字典序排序版本号,导致无法正确识别最新版本(比如v1.10会被排在v1.2前面)。以下是两种可靠的解决方法:

方法一:用JQ按版本号语义排序(纯API方式)

如果你的标签命名是标准版本格式(如v1.2.3或1.2.3),可以修改JQ逻辑,将版本号拆分为数字数组后排序:

tags_response=$(curl -s -u ":$pat" \
"https://dev.azure.com/$organization/$project/_apis/git/repositories/$repo_id/refs?filter=tags&api-version=7.1-preview.1")

# 提取最新标签(针对v开头的版本号,如v1.2.3)
latest_tag=$(echo $tags_response | jq -r '
.value 
| map({
    name: .name,
    version: (.name | ltrimstr("v") | split(".") | map(tonumber? // .))
})
| sort_by(.version) 
| last.name
')
  • 说明:tonumber? // .用来兼容带预发布后缀的版本(如v1.2.3-beta),避免转换失败报错;如果你的标签没有v前缀,删除ltrimstr("v")即可。

方法二:用Git命令直接获取(更简单可靠)

利用git ls-remote命令直接获取并排序标签,无需处理API返回的JSON,兼容性更强:

# 替换为你的仓库名称(不是repo_id)
repo_name="your-repo-name"
latest_tag=$(git ls-remote --tags --refs https://$pat@dev.azure.com/$organization/$project/_git/$repo_name | sort -V | tail -n1 | awk '{print $2}' | sed 's/refs\/tags\///')
  • 说明:sort -V会按版本号的语义规则排序,自动处理v1.10大于v1.2的情况;--refs参数会过滤掉带^{}的重复标签。

内容的提问来源于stack exchange,提问作者cris7ronaldo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:26:01