如何通过Github API获取指定分支的提交历史记录
实现方案
有成熟的可落地方案,核心逻辑是利用主流Git托管平台提交查询接口的分支过滤参数,无需克隆仓库、检出分支即可获取对应分支的提交链,返回结果和本地执行git log <分支名>的顺序、内容完全一致。
GitHub 平台调用示例
- 接口参数说明:调用
/repos/{所有者用户名}/{仓库名}/commits接口时,传入sha参数指定目标分支名即可过滤出对应分支的提交记录 - curl 调用命令:
curl \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <你的GitHub访问令牌>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ "https://api.github.com/repos/octocat/hello-world/commits?sha=main&per_page=100"
- 补充说明:
per_page参数最大支持100,提交数量超过单页上限时追加page参数翻页拉取即可。
GitLab 平台调用示例
- 接口参数说明:调用
/projects/{项目ID}/repository/commits接口时,传入ref_name参数指定目标分支名即可 - curl 调用命令:
curl --header "PRIVATE-TOKEN: <你的GitLab访问令牌>" \ "https://gitlab.com/api/v4/projects/12345/repository/commits?ref_name=main&per_page=100"
Gitee/自建Gitea 平台调用示例
- 接口参数说明:调用
/repos/{所有者用户名}/{仓库名}/commits接口时,传入sha参数指定目标分支名即可 - curl 调用命令:
curl -X GET --header 'Content-Type: application/json;charset=UTF-8' \ "https://gitee.com/api/v5/repos/oschina/gitee/commits?sha=main&access_token=<你的Gitee访问令牌>&per_page=100"
通用注意事项
- 私有仓库必须传入对应平台的访问令牌,且令牌需要开通仓库读取权限
- 所有平台接口默认按提交时间倒序返回,和本地
git log默认输出顺序完全匹配 - 自建Git服务只要是基于主流Git托管系统搭建的,均支持上述分支过滤参数,直接对应调整接口域名、参数即可使用
内容的提问来源于stack exchange,提问作者AZAhmed
相关产品推荐
相关产品推荐

