Git 提交的 REST API 端点
使用 REST API 与 GitHub 上 Git 数据库中的提交对象进行交互。
创建提交
创建一个新的 Git 提交对象。
签名验证对象
响应将包含一个 verification
对象,该对象描述了验证提交签名的结果。以下字段包含在 verification
对象中
名称 | 类型 | 描述 |
---|---|---|
已验证 | 布尔值 | 指示 GitHub 是否认为此提交中的签名已验证。 |
原因 | 字符串 | 已验证值的理由。下表列出了可能的值及其含义。 |
签名 | 字符串 | 从提交中提取的签名。 |
有效负载 | 字符串 | 已签名的值。 |
这些是 verification
对象中 reason
的可能值
值 | 描述 |
---|---|
过期密钥 | 生成签名的密钥已过期。 |
非签名密钥 | “签名”标志不在生成签名的 GPG 密钥的用法标志中。 |
gpgverify 错误 | 与签名验证服务通信时出现错误。 |
gpgverify 不可用 | 签名验证服务当前不可用。 |
未签名 | 该对象不包含签名。 |
未知签名类型 | 在提交中找到了非 PGP 签名。 |
无用户 | 提交中的 committer 电子邮件地址未与任何用户关联。 |
未验证的电子邮件 | 提交中的 committer 电子邮件地址与用户关联,但该电子邮件地址未在其帐户中验证。 |
bad_email | 提交中的committer 电子邮件地址未包含在生成签名的PGP密钥的身份中。 |
unknown_key | 生成签名的密钥未与任何用户的帐户注册。 |
malformed_signature | 解析签名时出错。 |
invalid | 无法使用在签名中找到密钥 ID 的密钥对签名进行密码验证。 |
valid | 上述错误均不适用,因此签名被认为已验证。 |
用于“创建提交”的细粒度访问令牌
此端点适用于以下细粒度令牌类型
细粒度令牌必须具有以下权限集
- “内容”存储库权限(写入)
用于“创建提交”的参数
名称、类型、描述 |
---|
accept string 建议设置为 |
名称、类型、描述 |
---|
owner string Required存储库的帐户所有者。名称不区分大小写。 |
repo string Required存储库的名称,不包含 |
名称、类型、描述 | ||||
---|---|---|---|---|
message string Required提交消息 | ||||
tree string Required此提交指向的树对象的 SHA | ||||
parents array of strings 此提交的父提交的 SHA。如果省略或为空,则提交将被写入为根提交。对于单个父提交,应提供一个 SHA 的数组;对于合并提交,应提供多个 SHA 的数组。 | ||||
author object 有关提交作者的信息。默认情况下, | ||||
| ||||
committer 对象 有关进行提交的人员的信息。默认情况下, | ||||
|
名称、类型、描述 |
---|
name 字符串 提交的作者(或提交者)的姓名 |
email 字符串 提交的作者(或提交者)的电子邮件 |
date 字符串 指示此提交的作者时间(或提交时间)。这是一个 ISO 8601 格式的时间戳: |
“创建提交”的 HTTP 响应状态代码
状态代码 | 描述 |
---|---|
201 | 已创建 |
404 | 资源未找到 |
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/commits \ -d '{"message":"my commit message","author":{"name":"Mona Octocat","email":"[email protected]","date":"2008-07-09T16:13:30+12:00"},"parents":["7d1b31e74ee336d15cbd21741bc88a537ed063a0"],"tree":"827efc6d56897b048c772eb4087f854f46256132","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABAQAdFiEESn/54jMNIrGSE6Tp6cQjvhfv7nAFAlnT71cACgkQ6cQjvhfv\n7nCWwA//XVqBKWO0zF+bZl6pggvky3Oc2j1pNFuRWZ29LXpNuD5WUGXGG209B0hI\nDkmcGk19ZKUTnEUJV2Xd0R7AW01S/YSub7OYcgBkI7qUE13FVHN5ln1KvH2all2n\n2+JCV1HcJLEoTjqIFZSSu/sMdhkLQ9/NsmMAzpf/iIM0nQOyU4YRex9eD1bYj6nA\nOQPIDdAuaTQj1gFPHYLzM4zJnCqGdRlg0sOM/zC5apBNzIwlgREatOYQSCfCKV7k\nnrU34X8b9BzQaUx48Qa+Dmfn5KQ8dl27RNeWAqlkuWyv3pUauH9UeYW+KyuJeMkU\n+NyHgAsWFaCFl23kCHThbLStMZOYEnGagrd0hnm1TPS4GJkV4wfYMwnI4KuSlHKB\njHl3Js9vNzEUQipQJbgCgTiWvRJoK3ENwBTMVkKHaqT4x9U4Jk/XZB6Q8MA09ezJ\n3QgiTjTAGcum9E9QiJqMYdWQPWkaBIRRz5cET6HPB48YNXAAUsfmuYsGrnVLYbG+\nUpC6I97VybYHTy2O9XSGoaLeMI9CsFn38ycAxxbWagk5mhclNTP5mezIq6wKSwmr\nX11FW3n1J23fWZn5HJMBsRnUCgzqzX3871IqLYHqRJ/bpZ4h20RhTyPj5c/z7QXp\neSakNQMfbbMcljkha+ZMuVQX1K9aRlVqbmv3ZMWh+OijLYVU2bc=\n=5Io4\n-----END PGP SIGNATURE-----\n"}'
响应
状态:201
{ "sha": "7638417db6d59f3c431d3e1f261cc637155684cd", "node_id": "MDY6Q29tbWl0NzYzODQxN2RiNmQ1OWYzYzQzMWQzZTFmMjYxY2M2MzcxNTU2ODRjZA==", "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd", "author": { "date": "2014-11-07T22:01:45Z", "name": "Monalisa Octocat", "email": "[email protected]" }, "committer": { "date": "2014-11-07T22:01:45Z", "name": "Monalisa Octocat", "email": "[email protected]" }, "message": "my commit message", "tree": { "url": "https://api.github.com/repos/octocat/Hello-World/git/trees/827efc6d56897b048c772eb4087f854f46256132", "sha": "827efc6d56897b048c772eb4087f854f46256132" }, "parents": [ { "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7d1b31e74ee336d15cbd21741bc88a537ed063a0", "sha": "7d1b31e74ee336d15cbd21741bc88a537ed063a0", "html_url": "https://github.com/octocat/Hello-World/commit/7d1b31e74ee336d15cbd21741bc88a537ed063a0" } ], "verification": { "verified": false, "reason": "unsigned", "signature": null, "payload": null }, "html_url": "https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd" }
获取提交对象
获取 Git 提交对象.
要获取提交的内容,请参见“获取提交”。
签名验证对象
响应将包含一个 verification
对象,该对象描述了验证提交签名的结果。以下字段包含在 verification
对象中
名称 | 类型 | 描述 |
---|---|---|
已验证 | 布尔值 | 指示 GitHub 是否认为此提交中的签名已验证。 |
原因 | 字符串 | 已验证值的理由。下表列出了可能的值及其含义。 |
签名 | 字符串 | 从提交中提取的签名。 |
有效负载 | 字符串 | 已签名的值。 |
这些是 verification
对象中 reason
的可能值
值 | 描述 |
---|---|
过期密钥 | 生成签名的密钥已过期。 |
非签名密钥 | “签名”标志不在生成签名的 GPG 密钥的用法标志中。 |
gpgverify 错误 | 与签名验证服务通信时出现错误。 |
gpgverify 不可用 | 签名验证服务当前不可用。 |
未签名 | 该对象不包含签名。 |
未知签名类型 | 在提交中找到了非 PGP 签名。 |
无用户 | 提交中的 committer 电子邮件地址未与任何用户关联。 |
未验证的电子邮件 | 提交中的 committer 电子邮件地址与用户关联,但该电子邮件地址未在其帐户中验证。 |
bad_email | 提交中的committer 电子邮件地址未包含在生成签名的PGP密钥的身份中。 |
unknown_key | 生成签名的密钥未与任何用户的帐户注册。 |
malformed_signature | 解析签名时出错。 |
invalid | 无法使用在签名中找到密钥 ID 的密钥对签名进行密码验证。 |
valid | 上述错误均不适用,因此签名被认为已验证。 |
“获取提交对象”的细粒度访问令牌
此端点适用于以下细粒度令牌类型
细粒度令牌必须具有以下权限集
- “内容”存储库权限(读取)
如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。
“获取提交对象”的参数
名称、类型、描述 |
---|
accept string 建议设置为 |
名称、类型、描述 |
---|
owner string Required存储库的帐户所有者。名称不区分大小写。 |
repo string Required存储库的名称,不包含 |
commit_sha 字符串 必需提交的 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/commits/COMMIT_SHA
响应
状态: 200
{ "sha": "7638417db6d59f3c431d3e1f261cc637155684cd", "node_id": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==", "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd", "html_url": "https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd", "author": { "date": "2014-11-07T22:01:45Z", "name": "Monalisa Octocat", "email": "[email protected]" }, "committer": { "date": "2014-11-07T22:01:45Z", "name": "Monalisa Octocat", "email": "[email protected]" }, "message": "添加了自述文件,因为我是一个优秀的 GitHub 用户", "tree": { "url": "https://api.github.com/repos/octocat/Hello-World/git/trees/691272480426f78a0138979dd3ce63b77f706feb", "sha": "691272480426f78a0138979dd3ce63b77f706feb" }, "parents": [ { "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/1acc419d4d6a9ce985db7be48c6349a0475975b5", "sha": "1acc419d4d6a9ce985db7be48c6349a0475975b5", "html_url": "https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd" } ], "verification": { "verified": false, "reason": "未签名", "signature": null, "payload": null } }