如何用Git-TFS迁移TFS的Project2至Git并保留全历史及单独推送
提取Project2并推送至远程Git仓库
方法一:从现有全量克隆仓库中提取(推荐用git filter-repo)
- 进入你已经克隆好的DefaultCollection本地Git目录
- 执行命令过滤出仅属于Project2的历史和文件,同时把Project2路径转为仓库根目录:
git filter-repo --path Collection3/Prod/Project2/ --path-rename Collection3/Prod/Project2/:./ - 用
git log确认历史仅包含Project2的相关提交 - 添加远程Git仓库地址:
git remote add origin <你的远程Git仓库URL> - 推送所有分支和标签到远程:
git push -u origin --all git push -u origin --tags
方法二:直接用git tfs单独克隆Project2(解决历史不全问题)
如果之前全量克隆时历史缺失,建议直接单独克隆Project2以获取完整历史:
- 执行克隆命令,指定Project2的完整TFS路径:
要是180天以上历史还是拉不下来,加MSYS_NO_PATHCONV=1 git tfs clone --branches=auto http://XXXX/DefaultCollection $/Collection3/Prod/Project2--all参数强制拉取全部历史:MSYS_NO_PATHCONV=1 git tfs clone --branches=auto --all http://XXXX/DefaultCollection $/Collection3/Prod/Project2 - 进入克隆后的Project2本地仓库
- 添加远程仓库并推送:
git remote add origin <你的远程Git仓库URL> git push -u origin --all git push -u origin --tags
注意点
- 用
git filter-repo前务必备份原仓库,因为这个操作会不可逆地修改仓库历史 - 单独克隆时确认TFS路径
$/Collection3/Prod/Project2完全正确,路径错误会导致克隆失败
内容的提问来源于stack exchange,提问作者mauro.branca
相关产品推荐
相关产品推荐

