如何通过CLI批量修改GitHub仓库默认分支?
批量修改GitHub仓库默认分支(无需UI)
完全可以通过GitHub API或官方命令行工具gh实现自动化操作,不用手动进入设置页面。下面是两种实用方案:
方案一:使用GitHub官方CLI工具(推荐)
gh是GitHub官方推出的命令行工具,操作简洁且无需手动处理API鉴权流程。
操作步骤:
安装
gh并完成账号登录:# macOS安装示例,其他系统可参考官方文档 brew install gh # 登录GitHub账号 gh auth login批量修改脚本示例(以组织仓库为例):
将脚本中的your-org-name替换为你的组织名称,main替换为目标默认分支名:ORG="your-org-name" NEW_DEFAULT_BRANCH="main" # 获取组织下所有仓库名(--limit值设为大于你的仓库总数即可) gh repo list $ORG --limit 200 --json name -q '.[].name' | while read REPO; do # 修改当前仓库的默认分支 gh repo edit $ORG/$REPO --default-branch $NEW_DEFAULT_BRANCH echo "✅ 已更新 $ORG/$REPO 的默认分支为 $NEW_DEFAULT_BRANCH" done若处理个人仓库,只需将
gh repo list $ORG替换为gh repo list <你的用户名> --type owner。
方案二:直接调用GitHub API(适合无gh环境)
通过curl调用GitHub REST API,需先生成一个带有repo权限的个人访问令牌(PAT)。
脚本示例:
ORG="your-org-name" NEW_DEFAULT_BRANCH="main" PAT="your-personal-access-token" # 从GitHub设置页面生成,需开启repo权限 # 处理分页获取仓库列表(示例获取前2页,可根据仓库数量调整循环次数) for PAGE in {1..2}; do curl -s -H "Authorization: token $PAT" "https://api.github.com/orgs/$ORG/repos?per_page=100&page=$PAGE" | jq -r '.[].full_name' | while read REPO_FULL_NAME; do # 调用API修改默认分支 curl -s -X PATCH -H "Authorization: token $PAT" \ -H "Content-Type: application/json" \ "https://api.github.com/repos/$REPO_FULL_NAME" \ -d "{\"default_branch\": \"$NEW_DEFAULT_BRANCH\"}" echo "✅ 已更新 $REPO_FULL_NAME 的默认分支为 $NEW_DEFAULT_BRANCH" done done
注意事项:
- 确保目标分支(如
main)已存在于每个仓库中,否则API会返回错误 - 处理个人仓库时,API路径需改为
https://api.github.com/users/<你的用户名>/repos - 若仓库总数超过200,需调整分页循环的页数范围
内容的提问来源于stack exchange,提问作者David Muñoz Tord
相关产品推荐
相关产品推荐

