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

如何一次性将GitHub组织所有仓库复制至另一普通GitHub账号?

批量复制GitHub组织仓库到个人账号

前提准备

  • 安装最新版gh CLI工具
  • 通过gh auth login分别登录组织账号和目标个人账号(可使用gh auth switch切换上下文,或通过环境变量指定token)
  • 确认你对组织内所有仓库拥有读取权限,目标个人账号具备创建仓库的权限

具体操作步骤

1. 导出组织仓库列表

假设组织名为my-org,执行以下命令导出所有仓库名称到文件:

gh repo list my-org --limit 1000 --json name --jq '.[].name' > repos.txt

--limit值设为足够大的数确保覆盖所有仓库,jq用于提取纯仓库名称。

2. 批量克隆并推送至个人账号

编写shell脚本循环处理每个仓库(替换your-personal-username为你的个人账号名):

TARGET_USER="your-personal-username"
while read repo; do
  # 浅克隆加快速度(需完整历史则去掉--depth 1)
  git clone --depth 1 git@github.com:my-org/$repo.git
  cd $repo
  # 添加个人账号远程仓库地址
  git remote add personal git@github.com:$TARGET_USER/$repo.git
  # 推送所有分支和标签
  git push --all personal
  git push --tags personal
  cd ..
  # 清理本地克隆文件(可选)
  rm -rf $repo
done < repos.txt

3. 私有仓库适配

若组织包含私有仓库,可先在个人账号创建对应私有仓库再推送,修改脚本如下:

TARGET_USER="your-personal-username"
while read repo; do
  # 在个人账号创建私有仓库
  gh repo create $TARGET_USER/$repo --private --clone=false
  git clone git@github.com:my-org/$repo.git
  cd $repo
  git remote add personal git@github.com:$TARGET_USER/$repo.git
  git push --all personal
  git push --tags personal
  cd ..
  rm -rf $repo
done < repos.txt

注意事项

  • 仓库数量过多时可能触发GitHub API限流,遇到后暂停一段时间再继续
  • 确保SSH密钥已添加至两个账号,避免重复输入密码
  • 含Git LFS的仓库需额外执行git lfs push --all personal完成大文件推送

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:10:46