咨询Team Foundation Server(TFS)使用的Git版本及仓库导入解决方案
解决Bitbucket仓库导入TFS时的无效邮箱报错问题
一、确认TFS使用的Git版本
TFS(现称Azure DevOps Server)每个版本都会绑定特定的Git for Windows定制版本,你可以通过两种方式快速确认:
- 服务器端直接查询:登录TFS服务器,打开命令提示符,导航到Git默认安装目录(通常是
C:\Program Files\Git\bin),执行命令:
即可看到当前TFS使用的Git版本号。git --version - 查阅官方发行说明:对应你的TFS/Azure DevOps Server版本,查看微软官方的版本发行文档,里面会明确标注绑定的Git版本信息。
二、不破坏子模块的导入解决方案
既然修改仓库历史会断裂子模块连接,我们可以通过跳过Git的fsck邮箱检查完成导入,全程保留原仓库的历史和子模块关联:
方法1:本地镜像仓库配置跳过检查(推荐)
这是最稳妥的无侵入方式,操作步骤如下:
- 从Bitbucket克隆仓库的镜像版本(完整保留所有历史、分支和子模块引用):
git clone --mirror <你的Bitbucket仓库URL> - 进入克隆后的镜像仓库目录(目录名通常为
<仓库名>.git):cd <仓库名>.git - 为当前仓库配置跳过无效邮箱的fsck检查:
git config fsck.badEmail ignore - 以这个镜像仓库为源,使用TFS的导入功能完成迁移即可。该配置仅作用于当前仓库,不会影响全局Git设置,且完全保留原仓库的子模块连接。
方法2:修改TFS服务器端Git配置(需管理员权限)
如果你的团队拥有TFS服务器管理员权限,可以直接在服务器全局关闭邮箱检查,一劳永逸解决后续导入问题:
- 登录TFS服务器,打开命令提示符执行:
git config --global fsck.badEmail ignore - 重启TFS相关服务(比如Azure DevOps Server应用层服务),确保配置生效后再尝试导入。
方法3:推送时跳过fsck检查(适用于直接推送场景)
如果是通过git push方式迁移仓库,可在推送命令中添加--no-fsck参数,跳过接收端的fsck检查:
git push --mirror --no-fsck <你的TFS仓库URL>
注意:该方法要求TFS服务器的Git版本为2.6及以上,建议先确认版本后再使用。
内容的提问来源于stack exchange,提问作者arumiat
相关产品推荐
相关产品推荐

