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

使用GitHub REST API通过SHA获取仓库标签失败求助

解决GitHub REST API获取标签详情的SHA不匹配问题

问题本质

你遇到的404错误,核心是两个接口返回的sha字段含义完全不同:

  • 「List Repository Tags」返回的sha是标签指向的commit对象的SHA
  • 「Get a Tag」接口要求传入的是标签自身的Git对象SHA(只有附注标签才有独立的Git对象SHA,轻量标签没有)

解决方案

方案1:用标签名称直接获取详情(推荐,兼容所有标签类型)

从「List Repository Tags」的返回结果里提取name字段(示例仓库第一个标签名为v3.0.0),调用仓库标签详情接口:

curl \
  -H "Accept: application/vnd.github+json" \
  "https://api.github.com/repos/octokit/graphql-action/tags/v3.0.0"

这个接口会返回标签的完整信息,包括关联的commit、作者、标签信息等,不管是轻量标签还是附注标签都能正常返回。

方案2:获取标签对象SHA后调用「Get a Tag」(仅适用于附注标签)

如果必须使用「Get a Tag」接口,需要先拿到标签自身的Git对象SHA:

  1. 先调用标签名称对应的详情接口,拿到标签对象的SHA(仅附注标签会返回该字段):
curl \
  -H "Accept: application/vnd.github+json" \
  "https://api.github.com/repos/octokit/graphql-action/tags/v3.0.0"
  1. 用返回结果中的标签对象SHA替换commit SHA,调用「Get a Tag」接口:
curl \
  -H "Accept: application/vnd.github+json" \
  "https://api.github.com/repos/octokit/graphql-action/git/tags/[标签对象SHA]"

注意:轻量标签没有独立的Git对象,无法通过「Get a Tag」接口获取信息,只能用方案1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:01:42