跳到主要内容
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的可能值

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

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

此端点可与以下细粒度令牌类型一起使用:

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

  • “内容”代码库权限(写入)

“创建标签对象”的参数

标头
名称、类型、描述
accept 字符串

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

路径参数
名称、类型、描述
owner 字符串 必需

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

repo 字符串 必需

不包含.git扩展名的代码库名称。名称不区分大小写。

正文参数
名称、类型、描述
tag 字符串 必需

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

message 字符串 必需

标签消息。

object 字符串 必需

此标签所标记的 git 对象的 SHA 值。

type 字符串 必需

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

可以是以下之一:committreeblob

tagger 对象

包含有关创建标签的个人的信息的对象。

名称、类型、描述
name 字符串 必需

标签作者的名称

email 字符串 必需

标签作者的电子邮件

date 字符串

标记此对象的时间。这是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": "initial version", "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": "unsigned", "signature": null, "payload": null } }

获取标签

签名验证对象

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

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

这些是verification对象中reason的可能值

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

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

此端点可与以下细粒度令牌类型一起使用:

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

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

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

“获取标签”的参数

标头
名称、类型、描述
accept 字符串

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

路径参数
名称、类型、描述
owner 字符串 必需

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

repo 字符串 必需

不包含.git扩展名的代码库名称。名称不区分大小写。

tag_sha 字符串 必填

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

状态代码描述
200

OK(成功)

404

资源未找到

409

冲突

“获取标签”的代码示例

请求示例

获取/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": "initial version", "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": "unsigned", "signature": null, "payload": null } }