从TFVC迁移至Git:Azure DevOps中如何迁移多分支并保留关联?
迁移TFVC双分支到Git并保留关联的实操步骤
我之前刚好处理过类似的需求,知道Azure DevOps自带的Import工具只能单分支迁移,所以得结合官方推荐的工具来完成双分支迁移,还能完美保留分支间的关联关系,让你后续在Release_1.0修bug后正常合并回Dev。
第一步:用Import工具迁移Dev分支作为Git仓库起点
- 按照你说的路径操作:Repos -> Files -> [New Git Repository] -> 点击「Import」按钮
- 源选择你的TFVC仓库的
$/MyProject/Dev分支,完成初始迁移。这时候你的Git仓库就有了Dev分支的完整历史,作为后续操作的基础。
第二步:用git-tfs迁移Release_1.0分支并关联历史
因为Import工具无法往已有Git仓库添加分支,所以得用git-tfs这个官方工具来处理分支迁移,它能保留TFVC里的分支关联和合并历史:
- 先在本地安装git-tfs(可以通过Chocolatey包管理工具安装,或者直接下载官方安装包)
- 打开命令行,把刚创建的Git仓库克隆到本地:
git clone <你的Azure DevOps Git仓库URL> - 进入本地仓库目录,添加TFVC仓库的远程源:
git tfs init http://<你的Azure DevOps服务器地址>/tfs/<项目集合名> $/MyProject - 抓取TFVC中Release_1.0分支的所有历史到本地:
git tfs fetch $/MyProject/Release_1.0 --branches=all - 将抓取到的TFVC分支转换为本地Git分支:
git checkout -b Release_1.0 remotes/tfs/Release_1.0 - 最后把这个本地分支推送到Azure DevOps的Git仓库:
git push origin Release_1.0
第三步:验证分支关联与工作流
现在你的Git仓库里已经有Dev和Release_1.0两个分支了,而且因为git-tfs完整保留了TFVC中的历史关联,你可以:
- 在Release_1.0分支上正常提交bug修复
- 发起Pull Request把修复内容合并回Dev分支
- 完全沿用你之前在TFVC里的工作流,没有任何断层
额外注意事项
- 迁移前建议暂停TFVC仓库的所有提交,避免迁移过程中出现变更遗漏
- 如果TFVC的两个分支之前有过合并历史,git-tfs会自动处理这些合并关系,确保Git仓库里的历史是完整且准确的
- 迁移完成后,可以在Azure DevOps的Git仓库中设置分支保护策略,比如要求Release_1.0分支的变更必须通过PR才能合并到Dev,和你之前的流程对齐
内容的提问来源于stack exchange,提问作者Andrew Stephens
相关产品推荐
相关产品推荐

