You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何程序化批量配置GitHub仓库仅允许squash-merge提交?

实现仅允许Squash-Merge的程序化方案

可以通过GitHub CLI(gh) 或者GitHub REST API 两种方式批量配置仓库,实现禁用merge commit和rebase merge、仅允许squash merge的效果。

一、使用GitHub CLI(gh)批量配置

利用gh repo edit命令的反向禁用选项,结合循环即可批量处理多个仓库:

  1. 先通过gh auth login完成身份验证,确保拥有目标仓库的管理员权限。
  2. 编写Bash循环脚本示例:
# 定义需要配置的仓库列表,格式为"owner/repo"
REPOS=(
  "user/repo1"
  "user/repo2"
  "org/repo3"
)

# 循环处理每个仓库
for REPO in "${REPOS[@]}"
do
  echo "配置仓库: $REPO"
  gh repo edit "$REPO" \
    --disable-merge-commit \
    --disable-rebase-merge \
    --enable-squash-merge
done

注:gh repo edit支持--disable-*类选项关闭对应合并方式,与你提到的--enable-*选项一一对应。

二、使用GitHub REST API批量配置

通过GitHub REST API的Update a repository接口修改仓库合并设置,实现批量配置:

  1. 生成拥有repo权限的个人访问令牌(PAT),用于API请求认证。
  2. 编写Python批量请求脚本示例:
import requests

# 配置信息
TOKEN = "你的个人访问令牌"
REPOS = [
    "user/repo1",
    "user/repo2",
    "org/repo3"
]
BASE_URL = "https://api.github.com/repos/"

headers = {
    "Authorization": f"token {TOKEN}",
    "Accept": "application/vnd.github.v3+json"
}

# 循环更新每个仓库
for repo in REPOS:
    url = f"{BASE_URL}{repo}"
    payload = {
        "allow_merge_commit": False,
        "allow_rebase_merge": False,
        "allow_squash_merge": True
    }
    response = requests.patch(url, json=payload, headers=headers)
    if response.status_code == 200:
        print(f"成功配置仓库: {repo}")
    else:
        print(f"配置仓库 {repo} 失败,状态码: {response.status_code}")

两种方式都能实现批量将仓库设置为仅允许squash merge的需求,可根据自身技术栈选择合适方案。

内容的提问来源于stack exchange,提问作者davejagoda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:13:21