为何无法通过GitHub API为不存在的master分支创建保护规则?
解决GitHub API为不存在的master分支创建保护规则的问题
你遇到的404错误是因为使用了针对已存在分支的专属保护规则API端点,而要为不存在的分支创建规则,需要用通用分支保护规则的API端点——这完全可行,和GitHub UI的逻辑一致。
关键区别:两个分支保护API端点
- 特定分支保护端点:
POST /repos/{owner}/{repo}/branches/{branch}/protection
这个端点要求目标分支必须已存在,否则返回404,这是你之前调用的接口。 - 通用分支保护规则端点:
POST /repos/{owner}/{repo}/branch-protection/rules
这个端点基于分支匹配模式创建规则,支持为不存在的分支设置保护,GitHub UI底层就是用的这个接口。
具体实现步骤
调用通用分支保护规则的POST接口,请求体中指定以下参数:
pattern: "master":匹配master分支(无论是否存在)restrict_pushes: true:启用「Restrict who can push to matching branches」选项restrict_creation: true:启用「Restrict pushes that create matching branches」选项push_restrictions:指定允许推送的用户/团队(开启restrict_pushes后必填,若设为空数组则无人能操作该分支)
示例请求体(JSON格式)
{ "pattern": "master", "restrict_pushes": true, "restrict_creation": true, "push_restrictions": { "users": [], "teams": [] } }
发送这个请求后,即使仓库中没有master分支,也会创建对应的保护规则,任何用户都无法创建或推送到master分支,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Quoshak
相关产品推荐
相关产品推荐

