Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

GitHub REST API 快速参考指南

基础网址:https://api.github.com

所有请求均需添加以下头部信息:-H "Authorization: token $GITHUB_TOKEN"

可使用 gh-env.sh 辅助工具自动设置 $GITHUB_TOKEN、$\GH_OWNER 和 $GH_REPO 的值:

source "${HERMES_HOME:-$HOME/.hermes}/skills/github/github-auth/scripts/gh-env.sh"

仓库

操作方法接口地址
获取仓库信息GET/repos/{owner}/{repo}
创建用户仓库POST/user/repos
创建组织仓库POST/orgs/{org}/repos
更新仓库PATCH/repos/{owner}/{repo}
删除仓库DELETE/repos/{owner}/{repo}
列出个人仓库GET/user/repos?per_page=30&sort=updated
列出组织仓库GET/orgs/{org}/repos
复制仓库POST/repos/{owner}/{repo}/forks
根据模板创建仓库POST/repos/{owner}/{template}/generate
获取标签GET/repos/{owner}/{repo}/topics
设置标签PUT/repos/{owner}/{repo}/topics

合并请求

操作方法接口地址
列出合并请求GET/repos/{owner}/{repo}/pulls?state=open
创建合并请求POST/repos/{owner}/{repo}/pulls
获取合并请求详情GET/repos/{owner}/{repo}/pulls/{number}
更新合并请求PATCH/repos/{owner}/{repo}/pulls/{number}
列出合并请求中的文件GET/repos/{owner}/{repo}/pulls/{number}/files
合并合并请求PUT/repos/{owner}/{repo}/pulls/{number}/merge
请求审核人POST/repos/{owner}/{repo}/pulls/{number}/requested_reviewers
创建代码审查POST/repos/{owner}/{repo}/pulls/{number}/reviews
添加内联评论POST/repos/{owner}/{repo}/pulls/{number}/comments

合并请求合并内容

{"merge_method": "squash", "commit_title": "feat: description (#N)"}

合并方式:"merge"、"squash"、"rebase"

PR 审核事件

"APPROVE"、"REQUEST_CHANGES"、"COMMENT"

问题(Issues)

操作方法接口地址
列出问题GET/repos/{owner}/{repo}/issues?state=open
创建问题POST/repos/{owner}/{repo}/issues
获取问题详情GET/repos/{owner}/{repo}/issues/{number}
更新问题PATCH/repos/{owner}/{repo}/issues/{number}
添加评论POST/repos/{owner}/{repo}/issues/{number}/comments
添加标签POST/repos/{owner}/{repo}/issues/{number}/labels
移除标签DELETE/repos/{owner}/{repo}/issues/{number}/labels/{name}
添加负责人POST/repos/{owner}/{repo}/issues/{number}/assignees
列出所有标签GET/repos/{owner}/{repo}/labels
搜索问题GET/search/issues?q={query}+repo:{owner}/{repo}

注意:Issues API 也会返回 PR 相关信息。解析数据时,请使用 "pull_request" not in item 进行过滤。

CI / GitHub Actions

操作方法接口地址
列出工作流GET/repos/{owner}/{repo}/actions/workflows
列出运行记录GET/repos/{owner}/{repo}/actions/runs?per_page=10
按分支列出运行记录GET/repos/{owner}/{repo}/actions/runs?branch={branch}
获取特定运行记录GET/repos/{owner}/{repo}/actions/runs/{run_id}
下载日志GET/repos/{owner}/{repo}/actions/runs/{run_id}/logs
重新运行POST/repos/{owner}/{repo}/actions/runs/{run_id}/rerun
重新运行失败的作业POST/repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs
触发任务分发POST/repos/{owner}/{repo}/actions/workflows/{id}/dispatches
获取提交状态GET/repos/{owner}/{repo}/commits/{sha}/status
检查提交对应的运行记录GET/repos/{owner}/{repo}/commits/{sha}/check-runs

版本发布

操作方法接口地址
列出版本发布记录GET/repos/{owner}/{repo}/releases
创建版本发布POST/repos/{owner}/{repo}/releases
获取特定版本发布记录GET/repos/{owner}/{repo}/releases/{id}
删除版本发布记录DELETE/repos/{owner}/{repo}/releases/{id}
上传资源文件POSThttps://uploads.github.com/repos/{owner}/{repo}/releases/{id}/assets?name={filename}

密钥信息

操作方法端点
列出机密信息GET/repos/{owner}/{repo}/actions/secrets
获取公钥GET/repos/{owner}/{repo}/actions/secrets/public-key
设置机密信息PUT/repos/{owner}/{repo}/actions/secrets/{name}
删除机密信息DELETE/repos/{owner}/{repo}/actions/secrets/{name}

分支保护设置

操作方法端点
获取分支保护规则GET/repos/{owner}/{repo}/branches/{branch}/protection
设置分支保护规则PUT/repos/{owner}/{repo}/branches/{branch}/protection
删除分支保护规则DELETE/repos/{owner}/{repo}/branches/{branch}/protection

用户/身份认证

操作方法端点
获取当前用户信息GET/user
列出用户拥有的仓库GET/user/repos
列出用户的 Gist 内容GET/gists
创建新 GistPOST/gists
搜索仓库GET/search/repositories?q={query}

分页功能

大多数列表类端点支持以下参数:

  • ?per_page=100(每页最多 100 条记录)
  • ?page=2 用于翻到下一页 | 可通过 Link 请求头中的 rel="next" 字段获取下一页地址 |

请求频率限制

  • 已认证用户:每小时 5,000 次请求
  • 查询剩余请求次数:curl -s -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/rate_limit

常用的 curl 请求格式

# GET
curl -s -H "Authorization: token $GITHUB_TOKEN" \
  https://api.github.com/repos/$GH_OWNER/$GH_REPO

# POST with JSON body
curl -s -X POST \
  -H "Authorization: token $GITHUB_TOKEN" \
  https://api.github.com/repos/$GH_OWNER/$GH_REPO/issues \
  -d '{"title": "...", "body": "..."}'

# PATCH (update)
curl -s -X PATCH \
  -H "Authorization: token $GITHUB_TOKEN" \
  https://api.github.com/repos/$GH_OWNER/$GH_REPO/issues/42 \
  -d '{"state": "closed"}'

# DELETE
curl -s -X DELETE \
  -H "Authorization: token $GITHUB_TOKEN" \
  https://api.github.com/repos/$GH_OWNER/$GH_REPO/issues/42/labels/bug

# Parse JSON response with python3
curl -s ... | python3 -c "import sys,json; data=json.load(sys.stdin); print(data['field'])"