跳至主要内容
REST API 现在已版本化。 有关更多信息,请参阅“关于 API 版本控制”。

用于 Git 标签的 REST API 端点

使用 REST API 与 GitHub 上 Git 数据库中的标签对象进行交互。

关于 Git 标签

Git 标签类似于 Git 引用,但它指向的 Git 提交永远不会更改。当您想要指向特定版本时,Git 标签很有用。这些端点允许您读取和写入 标签对象 到 GitHub 上的 Git 数据库。API 仅支持 带注释的标签对象,不支持轻量级标签。

创建标签对象

请注意,创建标签对象不会创建在 Git 中创建标签的引用。如果您想在 Git 中创建带注释的标签,您必须执行此调用以创建标签对象,然后 创建 refs/tags/[tag] 引用。如果您想创建轻量级标签,您只需要 创建 标签引用 - 此调用将是不必要的。

签名验证对象

响应将包含一个 verification 对象,该对象描述了验证提交签名的结果。verification 对象中包含以下字段

名称类型描述
已验证布尔值指示 GitHub 是否认为此提交中的签名已验证。
原因字符串已验证值的理由。下表列出了可能的值及其含义。
签名字符串从提交中提取的签名。
有效载荷字符串签名的值。

以下是 verification 对象中 reason 的可能值

描述
已过期密钥生成签名的密钥已过期。
非签名密钥“签名”标志不在生成签名的 GPG 密钥的用法标志中。
gpgverify 错误与签名验证服务通信时出现错误。
gpgverify 不可用签名验证服务当前不可用。
未签名该对象不包含签名。
unknown_signature_type在提交中发现了一个非 PGP 签名。
no_user提交中的 committer 电子邮件地址未与任何用户关联。
unverified_email提交中的 committer 电子邮件地址与一个用户关联,但该电子邮件地址未在其帐户上验证。
bad_email提交中的 committer 电子邮件地址未包含在生成签名的 PGP 密钥的身份中。
unknown_key生成签名的密钥未在任何用户的帐户中注册。
malformed_signature解析签名时出错。
invalid无法使用在签名中找到密钥 ID 的密钥对签名进行密码验证。
valid以上错误均不适用,因此签名被认为已验证。

用于“创建标签对象”的细粒度访问令牌

此端点适用于以下细粒度令牌类型

细粒度令牌必须具有以下权限集

  • “内容”存储库权限(写入)

“创建标签对象”的参数

标头
名称、类型、描述
accept string

建议设置为 application/vnd.github+json

路径参数
名称、类型、描述
owner string 必填

存储库的帐户所有者。名称不区分大小写。

repo string 必填

存储库的名称,不包括 .git 扩展名。名称不区分大小写。

主体参数
名称、类型、描述
tag string 必填

标签的名称。这通常是一个版本(例如,“v0.0.1”)。

message string 必填

标签消息。

object string 必填

此标签所标记的 Git 对象的 SHA。

type string 必填

我们正在标记的对象类型。通常是commit,但也可以是treeblob

可以是以下之一: commit, tree, blob

tagger object

包含创建标签的个人信息的物件。

名称、类型、描述
name string 必填

标签作者的姓名

email string 必填

标签作者的电子邮件

date string

此对象被标记的时间。这是一个 ISO 8601 格式的时间戳:YYYY-MM-DDTHH:MM:SSZ

“创建标签对象”的 HTTP 响应状态码

状态码描述
201

已创建

409

冲突

422

验证失败,或端点已被垃圾邮件攻击。

“创建标签对象”的代码示例

请求示例

post/repos/{owner}/{repo}/git/tags
curl -L \ -X POST \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/git/tags \ -d '{"tag":"v0.0.1","message":"initial version","object":"c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c","type":"commit","tagger":{"name":"Monalisa Octocat","email":"[email protected]","date":"2011-06-17T14:53:35-07:00"}}'

响应

状态:201
{ "node_id": "MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==", "tag": "v0.0.1", "sha": "940bd336248efae0f9ee5bc7b2d5c985887b16ac", "url": "https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac", "message": "初始版本", "tagger": { "name": "Monalisa Octocat", "email": "[email protected]", "date": "2014-11-07T22:01:45Z" }, "object": { "type": "commit", "sha": "c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c", "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c" }, "verification": { "verified": false, "reason": "未签名", "signature": null, "payload": null } }

获取标签

签名验证对象

响应将包含一个 verification 对象,该对象描述了验证提交签名的结果。verification 对象中包含以下字段

名称类型描述
已验证布尔值指示 GitHub 是否认为此提交中的签名已验证。
原因字符串已验证值的理由。下表列出了可能的值及其含义。
签名字符串从提交中提取的签名。
有效载荷字符串签名的值。

以下是 verification 对象中 reason 的可能值

描述
已过期密钥生成签名的密钥已过期。
非签名密钥“签名”标志不在生成签名的 GPG 密钥的用法标志中。
gpgverify 错误与签名验证服务通信时出现错误。
gpgverify 不可用签名验证服务当前不可用。
未签名该对象不包含签名。
unknown_signature_type在提交中发现了一个非 PGP 签名。
no_user提交中的 committer 电子邮件地址未与任何用户关联。
unverified_email提交中的 committer 电子邮件地址与一个用户关联,但该电子邮件地址未在其帐户上验证。
bad_email提交中的 committer 电子邮件地址未包含在生成签名的 PGP 密钥的身份中。
unknown_key生成签名的密钥未在任何用户的帐户中注册。
malformed_signature解析签名时出错。
invalid无法使用在签名中找到密钥 ID 的密钥对签名进行密码验证。
valid以上错误均不适用,因此签名被认为已验证。

用于“获取标签”的细粒度访问令牌

此端点适用于以下细粒度令牌类型

细粒度令牌必须具有以下权限集

  • “内容”仓库权限(读取)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。

“获取标签”的参数

标头
名称、类型、描述
accept string

建议设置为 application/vnd.github+json

路径参数
名称、类型、描述
owner string 必填

存储库的帐户所有者。名称不区分大小写。

repo string 必填

存储库的名称,不包括 .git 扩展名。名称不区分大小写。

tag_sha 字符串 必需

“获取标签”的 HTTP 响应状态代码

状态码描述
200

成功

404

资源未找到

409

冲突

“获取标签”的代码示例

请求示例

get/repos/{owner}/{repo}/git/tags/{tag_sha}
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/git/tags/TAG_SHA

响应

状态:200
{ "node_id": "MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==", "tag": "v0.0.1", "sha": "940bd336248efae0f9ee5bc7b2d5c985887b16ac", "url": "https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac", "message": "初始版本", "tagger": { "name": "Monalisa Octocat", "email": "[email protected]", "date": "2014-11-07T22:01:45Z" }, "object": { "type": "commit", "sha": "c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c", "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c" }, "verification": { "verified": false, "reason": "未签名", "signature": null, "payload": null } }