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 字符串建议设置为 |
名称、类型、描述 |
---|
owner 字符串 必需代码库的帐户所有者。名称不区分大小写。 |
repo 字符串 必需不包含 |
名称、类型、描述 | ||||
---|---|---|---|---|
tag 字符串 必需标签的名称。这通常是版本(例如,“v0.0.1”)。 | ||||
message 字符串 必需标签消息。 | ||||
object 字符串 必需此标签所标记的 git 对象的 SHA 值。 | ||||
type 字符串 必需我们正在标记的对象的类型。通常是 可以是以下之一: | ||||
tagger 对象包含有关创建标签的个人的信息的对象。 | ||||
|
名称、类型、描述 |
---|
name 字符串 必需标签作者的名称 |
email 字符串 必需标签作者的电子邮件 |
date 字符串标记此对象的时间。这是ISO 8601格式的时间戳: |
“创建标签对象”的 HTTP 响应状态代码
状态代码 | 描述 |
---|---|
201 | 已创建 |
409 | 冲突 |
422 | 验证失败,或端点已被垃圾邮件攻击。 |
“创建标签对象”的代码示例
请求示例
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 字符串建议设置为 |
名称、类型、描述 |
---|
owner 字符串 必需代码库的帐户所有者。名称不区分大小写。 |
repo 字符串 必需不包含 |
tag_sha 字符串 必填 |
“获取标签”的HTTP响应状态码
状态代码 | 描述 |
---|---|
200 | OK(成功) |
404 | 资源未找到 |
409 | 冲突 |
“获取标签”的代码示例
请求示例
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 } }