用于 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 建议设置为 |
名称、类型、描述 |
---|
owner string 必填存储库的帐户所有者。名称不区分大小写。 |
repo string 必填存储库的名称,不包括 |
名称、类型、描述 | ||||
---|---|---|---|---|
tag string 必填标签的名称。这通常是一个版本(例如,“v0.0.1”)。 | ||||
message string 必填标签消息。 | ||||
object string 必填此标签所标记的 Git 对象的 SHA。 | ||||
type string 必填我们正在标记的对象类型。通常是 可以是以下之一: | ||||
tagger object 包含创建标签的个人信息的物件。 | ||||
|
名称、类型、描述 |
---|
name string 必填标签作者的姓名 |
email string 必填标签作者的电子邮件 |
date string 此对象被标记的时间。这是一个 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": "初始版本", "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 建议设置为 |
名称、类型、描述 |
---|
owner string 必填存储库的帐户所有者。名称不区分大小写。 |
repo string 必填存储库的名称,不包括 |
tag_sha 字符串 必需 |
“获取标签”的 HTTP 响应状态代码
状态码 | 描述 |
---|---|
200 | 成功 |
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": "初始版本", "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 } }