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

如何完整迁移/复制Git仓库:含所有远程分支、PR及标签

GitHub跨账户迁移仓库:完整保留分支、标签与PR历史

当然可以实现,不过要注意:分支、标签属于Git仓库本身的内容,用Git命令就能迁移;但Pull Request(PR)是GitHub平台专属的功能,不在Git仓库数据里,需要单独处理。

一、分支与标签的高效迁移(优化你的现有命令)

你的现有命令可以简化,更直接的镜像迁移方式如下,一次性推送所有分支和标签:

# 镜像克隆原仓库(包含所有分支、标签)
git clone --mirror OLD_REPO_URL
# 进入克隆的镜像仓库目录
cd $(basename OLD_REPO_URL .git)
# 添加新仓库的远程地址
git remote add new-origin DESTINATION_REPO_URL
# 推送所有分支、标签到新仓库
git push --mirror new-origin

这个方法比你原来的步骤更简洁,避免了bare仓库的转换操作,效果完全一致。

二、PR历史的迁移方法

PR是GitHub平台的元数据,Git命令无法直接同步,有两种可行方案:

方案1:GitHub官方导入功能(推荐)

这是最省心的方式,会自动完整迁移所有PR、评论、分支、标签,包括PR的创建时间、合并状态、评论记录等细节:

  • 登录账户Y,创建一个空仓库(不要勾选初始化README、.gitignore等选项)
  • 进入新仓库的「Settings」页面,找到「Import code」选项
  • 输入账户X的原仓库URL,按照提示完成导入即可

方案2:手动导出重建PR(适合自定义需求)

如果官方导入无法满足你的场景,可手动导出PR数据后在新仓库重建:

  1. 导出原仓库PR数据:
    用GitHub CLI(需提前安装并登录)导出所有PR的核心信息:
    gh pr list --repo ACCOUNT_X/REPO_NAME --state all --json number,title,body,headRefName,baseRefName --output prs.json
    
    这个命令会生成一个JSON文件,包含所有PR(已合并、关闭、打开)的标题、描述、关联分支等信息。
  2. 在新仓库重建PR:
    先确保原仓库的所有分支已经推送到新仓库,再遍历JSON文件,用CLI批量创建PR:
    # 示例:单个PR的创建命令(批量操作需结合Python等脚本语言)
    gh pr create --repo ACCOUNT_Y/NEW_REPO_NAME --title "PR标题" --body "PR描述内容" --head "原PR的头分支" --base "原PR的目标分支"
    
    注意:这种方式无法还原PR的创建时间、评论时间、审批记录等细节,只能重建PR的基本内容和分支关联。

内容的提问来源于stack exchange,提问作者luk.monecki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:39