调用GitHub Merging API合并提交返回404 Not Found问题求助
问题解决排查指南
1. 优先校验API请求基础参数
- 企业版GitHub需使用专属API端点,而非公有GitHub的
api.github.com,正确格式为https://<你的企业GitHub域名>/api/v3,端点错误会直接返回404 - 确认请求路径中的
owner(组织/个人名)、repo(仓库名)拼写完全匹配,GitHub对该部分路径大小写敏感 - 检查
head参数传入格式是否正确:不要额外包裹单引号,仅需传入纯分支名字符串master即可,若请求体中为'master'会被识别为带单引号的分支名,导致无法匹配返回404
2. 校验令牌权限配置
GitHub为避免泄露私有资源存在性,无权限访问时会统一返回404而非403,需重点检查令牌权限:
- 若使用细粒度个人访问令牌(Fine-grained PAT):确认该令牌对目标仓库开启了Contents读写权限,仅开启Pull Requests权限不足以调用合并API
- 若使用经典个人访问令牌(Classic PAT):确认已勾选
repo完整权限,企业版场景需额外勾选repo:enterprisescope
3. 前置校验分支存在性
先调用分支查询API确认分支可被正常访问,排除分支识别问题:
# 校验base分支存在性 curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <你的令牌>" \ <API端点>/repos/<owner>/<repo>/branches/<base分支名> # 校验master分支存在性 curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <你的令牌>" \ <API端点>/repos/<owner>/<repo>/branches/master
若以上请求返回404,可确认是路径、端点或令牌权限问题;若正常返回分支信息,再继续排查合并逻辑。
4. 快进合并推荐实现方案
针对你要求的纯快进无合并提交的场景,推荐直接使用更新引用API实现,比合并API更适配快进场景:
curl -L \ -X PATCH \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <你的令牌>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ <API端点>/repos/<owner>/<repo>/git/refs/heads/<base分支名> \ -d '{"sha":"<master分支最新commit SHA>","force":false}'
参数force: false会限制仅快进更新可成功,完全符合你分支的配置要求,不会产生额外合并提交。
内容的提问来源于stack exchange,提问作者deadcode
相关产品推荐
相关产品推荐

