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

用于 Git 引用 REST API 端点

使用 REST API 与 GitHub 上 Git 数据库中的引用进行交互

关于 Git 引用

Git 引用 (git ref) 是一个包含 Git 提交 SHA-1 哈希的文件。在引用 Git 提交时,可以使用 Git 引用(一个易于记忆的名称)而不是哈希。Git 引用可以被重写以指向新的提交。分支是一个 Git 引用,它存储新的 Git 提交哈希。这些端点允许您读取和写入 GitHub 上 Git 数据库的引用

列出匹配的引用

返回与提供的名称匹配的 Git 数据库中的引用数组。URL 中的 :ref 必须格式化为 heads/<分支名称>(分支)和 tags/<标签名称>(标签)。如果 :ref 不存在于存储库中,但现有引用以 :ref 开头,则它们将作为数组返回。

当您在不提供 :ref 的情况下使用此端点时,它将返回 Git 数据库中的所有引用数组,包括注释和隐藏(如果它们存在于服务器上)。命名空间中的任何内容都会被返回,而不仅仅是 headstags

注意:您需要显式地 请求拉取请求 以触发测试合并提交,该提交会检查拉取请求的可合并性。有关更多信息,请参阅“检查拉取请求的可合并性”。

如果您请求与名为 feature 的分支匹配的引用,但 feature 分支不存在,则响应仍然可以包含以 feature 开头的其他匹配的头部引用,例如 featureAfeatureB

“列出匹配的引用”的细粒度访问令牌

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

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

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

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

“列出匹配的引用”的参数

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

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

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

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

repo string 必需

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

ref string 必需

Git 引用。有关更多信息,请参阅 Git 文档中的“Git 引用”。

“列出匹配的引用”的 HTTP 响应状态代码

状态代码描述
200

OK

409

冲突

“列出匹配的引用”的代码示例

请求示例

get/repos/{owner}/{repo}/git/matching-refs/{ref}
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/matching-refs/REF

响应

状态:200
[ { "ref": "refs/heads/feature-a", "node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlLWE=", "url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/feature-a", "object": { "type": "commit", "sha": "aa218f56b14c9653891f9e74264a383fa43fefbd", "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd" } }, { "ref": "refs/heads/feature-b", "node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlLWI=", "url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/feature-b", "object": { "type": "commit", "sha": "612077ae6dffb4d2fbd8ce0cccaa58893b07b5ac", "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/612077ae6dffb4d2fbd8ce0cccaa58893b07b5ac" } } ]

获取引用

从您的 Git 数据库中返回单个引用。URL 中的 :ref 必须格式化为 heads/<branch name>(分支)和 tags/<tag name>(标签)。如果 :ref 与现有引用不匹配,则返回 404

注意:您需要显式地 请求拉取请求 以触发测试合并提交,该提交会检查拉取请求的可合并性。有关更多信息,请参阅“检查拉取请求的可合并性”。

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

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

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

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

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

用于“获取引用”的参数

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

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

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

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

repo string 必需

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

ref string 必需

Git 引用。有关更多信息,请参阅 Git 文档中的“Git 引用”。

用于“获取引用”的 HTTP 响应状态码

状态代码描述
200

OK

404

资源未找到

409

冲突

用于“获取引用”的代码示例

请求示例

get/repos/{owner}/{repo}/git/ref/{ref}
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/ref/REF

响应

状态:200
{ "ref": "refs/heads/featureA", "node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==", "url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA", "object": { "type": "commit", "sha": "aa218f56b14c9653891f9e74264a383fa43fefbd", "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd" } }

创建引用

为您的仓库创建引用。即使使用的提交 SHA-1 哈希存在,您也无法为空仓库创建新引用。空仓库是没有分支的仓库。

创建引用时的细粒度访问令牌

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

细粒度令牌必须至少具有以下权限集之一

  • "内容" 仓库权限(写入)
  • "内容" 仓库权限(写入)"工作流" 仓库权限(写入)

创建引用时的参数

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

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

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

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

repo string 必需

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

主体参数
名称、类型、描述
ref string 必需

完全限定引用的名称(例如:refs/heads/master)。如果它不以“refs”开头且至少没有两个斜杠,则会被拒绝。

sha 字符串 必需

此引用的 SHA1 值。

创建引用时的 HTTP 响应状态代码

状态代码描述
201

已创建

409

冲突

422

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

创建引用时的代码示例

请求示例

post/repos/{owner}/{repo}/git/refs
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/refs \ -d '{"ref":"refs/heads/featureA","sha":"aa218f56b14c9653891f9e74264a383fa43fefbd"}'

响应

状态:201
{ "ref": "refs/heads/featureA", "node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==", "url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA", "object": { "type": "commit", "sha": "aa218f56b14c9653891f9e74264a383fa43fefbd", "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd" } }

更新引用

将提供的引用更新为指向新的 SHA。有关更多信息,请参阅 Git 文档中的“Git References”。

更新引用时的细粒度访问令牌

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

细粒度令牌必须至少具有以下权限集之一

  • "内容" 仓库权限(写入)
  • "内容" 仓库权限(写入)"工作流" 仓库权限(写入)

更新引用时的参数

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

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

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

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

repo string 必需

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

ref string 必需

Git 引用。有关更多信息,请参阅 Git 文档中的“Git 引用”。

主体参数
名称、类型、描述
sha 字符串 必需

要将此引用设置为的 SHA1 值

force 布尔值

指示是否强制更新或确保更新是快进更新。省略此选项或将其设置为 false 将确保您不会覆盖工作。

默认: false

更新引用时的 HTTP 响应状态代码

状态代码描述
200

OK

409

冲突

422

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

更新引用时的代码示例

请求示例

patch/repos/{owner}/{repo}/git/refs/{ref}
curl -L \ -X PATCH \ -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/refs/REF \ -d '{"sha":"aa218f56b14c9653891f9e74264a383fa43fefbd","force":true}'

响应

状态:200
{ "ref": "refs/heads/featureA", "node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==", "url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA", "object": { "type": "commit", "sha": "aa218f56b14c9653891f9e74264a383fa43fefbd", "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd" } }

删除引用

删除提供的引用。

删除引用时的细粒度访问令牌

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

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

  • "内容" 仓库权限(写入)

删除引用时的参数

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

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

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

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

repo string 必需

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

ref string 必需

Git 引用。有关更多信息,请参阅 Git 文档中的“Git 引用”。

删除引用时的 HTTP 响应状态代码

状态代码描述
204

无内容

409

冲突

422

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

删除引用时的代码示例

请求示例

delete/repos/{owner}/{repo}/git/refs/{ref}
curl -L \ -X DELETE \ -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/refs/REF

响应

状态:204