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

多VSTS仓库源码含历史迁移至单一VSTS仓库方法咨询

解决方案:多VSTS仓库合并迁移至单一仓库(保留完整提交历史)

当然可以实现!把多个VSTS(如今已更名为Azure DevOps)仓库的源码和完整提交历史合并迁移到单一目标仓库是完全可行的,我给你两种实用方案,你可以根据自己的操作习惯选择:

方法一:用Git命令手动合并(精细控制)

如果你习惯用命令行,或者需要对合并过程做精细调整,这个方法最适合,能100%保留所有提交历史和分支结构。

步骤如下:

  1. 准备本地目标仓库
    如果final.visualstudio.com的目标仓库是全新的,先把它克隆到本地:

    git clone https://final.visualstudio.com/DefaultCollection/_git/YourFinalRepo
    cd YourFinalRepo
    

    要是目标仓库已经有内容,直接进入本地仓库目录就行。

  2. 添加第一个源仓库作为远程
    把abc.visualstudio.com的仓库添加为本地仓库的远程源:

    git remote add abc https://abc.visualstudio.com/DefaultCollection/_git/AbcRepo
    
  3. 拉取源仓库的所有历史和分支
    拉取这个源仓库的所有提交历史,包括所有分支:

    git fetch abc --all
    
  4. 合并或推送分支到目标仓库

    • 如果你想把abc仓库的主分支(比如main)合并到目标仓库的主分支,执行:
      git merge abc/main --allow-unrelated-histories
      
      (--allow-unrelated-histories必须加,因为两个仓库的初始提交是独立的)
    • 要是想保留abc仓库的原有分支结构,直接把远程分支推送到目标仓库就行:
      git push origin abc/feature-branch-1
      git push origin abc/release-v1.0
      
  5. 重复操作处理第二个源仓库
    对xyz.visualstudio.com的仓库执行同样的步骤:

    git remote add xyz https://xyz.visualstudio.com/DefaultCollection/_git/XyzRepo
    git fetch xyz --all
    git merge xyz/main --allow-unrelated-histories
    # 按需推送其他分支
    git push origin xyz/another-feature
    
  6. 清理本地远程源(可选)
    迁移完成后,可以删掉本地添加的临时远程源:

    git remote remove abc
    git remote remove xyz
    

方法二:用Azure DevOps导入功能(无命令行更简便)

如果你不想碰命令行,Azure DevOps自带的导入功能能帮你一键完成迁移,同样保留完整历史。

步骤如下:

  1. 进入目标仓库的导入页面
    打开final.visualstudio.com的目标仓库,点击页面顶部的**"导入"**按钮(找不到的话,点右上角的"..."菜单,选"导入仓库")。

  2. 导入第一个源仓库

    • 在"源仓库URL"里填abc.visualstudio.com仓库的克隆地址(比如https://abc.visualstudio.com/DefaultCollection/_git/AbcRepo)。
    • 输入源仓库的访问凭据(建议用个人访问令牌PAT,权限选"代码读取"和"代码写入")。
    • 选择要导入的分支(可以选全部,也可以指定特定分支)。
    • 点击**"导入"**,等一会儿就完成了,所有提交历史都会保留。
  3. 导入第二个源仓库
    重复步骤2,把xyz.visualstudio.com的仓库也导入进来。

    • 小提醒:如果两个源仓库有同名分支(比如都是main),导入时可以把xyz的分支重命名(比如改成xyz-main),之后再通过拉取请求合并到目标仓库的主分支,这样能避免冲突,还能完整保留历史。
  4. 合并分支(按需操作)
    要是导入了重命名的分支,在Azure DevOps仓库页面创建拉取请求,把xyz-main合并到main,合并时选"保留历史记录"的选项,就能把两个仓库的主分支历史合并到一起。

一些关键注意事项

  • 权限要到位:确保你的账号对源仓库有读取权限,对目标仓库有写入权限,用PAT比密码更安全,尤其是企业环境。
  • 冲突要处理:如果两个源仓库有同名文件且内容不一样,合并时会冲突。用命令行的话,编辑冲突文件后执行git add <冲突文件>和git commit;用拉取请求的话,直接在PR页面在线解决就行。
  • 大文件要提前清理:如果仓库里有超过100MB的大文件,建议先用git filter-repo工具清理掉再迁移,不然容易导入失败或者让目标仓库体积过大。
  • 工作项关联的小技巧:如果源仓库的提交里关联了工作项(比如#123),迁移后如果工作项已经同步到目标仓库且ID一致,关联会自动生效;如果ID变了,可以用git filter-repo批量替换提交信息里的工作项ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:32:51