使用git tfs迁移TFVC至Git遇长路径报错,如何排除文件夹并保留历史
解决方案:TFVC转Git时路径过长问题处理
核心问题解答
1. 能否排除问题文件夹?
可以,无需依赖tfignore,直接通过git-tfs的参数实现,且能保留其余路径的完整历史。
2. tfignore仅适用于本地工作区吗?
是的,tfignore是TFVC本地工作区专属的忽略规则文件,服务器工作区不会识别它,因此在使用git-tfs转换服务器工作区时,tfignore无法起到排除路径的作用。
具体规避方案(按优先级排序)
方案1:直接用git-tfs排除问题路径(最简便)
在克隆命令中添加--ignore-pattern参数,指定要排除的文件夹路径(支持通配符**匹配所有子项),这样git-tfs会完全跳过该文件夹的所有历史和文件,不会触发长路径错误。
示例命令:
git tfs clone http://tfs-server:8080/tfs/YourCollection $/YourProject/Main --ignore-pattern="$/YourProject/Main/ProblematicFolder/**"
- 该命令会保留除
ProblematicFolder外的所有历史记录。 - 如果需要排除多个路径,可重复添加
--ignore-pattern参数。
方案2:启用Windows长路径支持(保留完整历史)
如果不想排除文件夹,可开启Windows的长路径支持,让git-tfs能处理超过259字符的路径:
- 组策略方式:打开本地组策略编辑器,导航到
计算机配置 > 管理模板 > 系统 > 文件系统,启用「启用Win32长路径」选项,重启生效。 - 注册表方式:打开注册表编辑器,定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将LongPathsEnabled(DWORD类型)的值改为1,重启生效。 - 生效后重新运行git-tfs克隆命令即可,无需修改任何仓库内容。
方案3:TFVC端预处理(需服务器权限)
如果有权限修改TFVC仓库,可先缩短问题文件夹的路径:
- 在TFVC服务器工作区中,将问题文件夹或其父文件夹重命名为更短的名称,提交一个新的变更集。
- 使用git-tfs克隆从这个新变更集开始:
git tfs clone http://tfs-server:8080/tfs/YourCollection $/YourProject/Main --changeset=XXXXXX - 如果需要保留该文件夹的旧历史,可后续用
git tfs fetch --ignore-pattern="$/YourProject/Main/OldProblematicPath/**"拉取更早的变更集,避免旧长路径触发错误。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

