在深入讨论这个问题之前,先介绍一下背景:
几个月前,我的团队将我们的存储库从 Team Foundation Server 迁移到 Azure DevOps。 上周,我们注意到 TFS 上的一个分支已经完成了现在需要的工作。因此,我们决定将该分支引入 Azure,以避免再次执行上述工作。
我从我的计算机上的 TFS 克隆了存储库,更改源 URL 以匹配 Azure 的 URL,然后尝试按照以下步骤推送分支:
- 从 TFS 克隆
- 从我感兴趣的分支创建一个新分支
- 添加远程源(称为 origin-azure)
- 添加虚拟文件并提交更改
- 将分支推送到 origin-azure
它给了我以下错误消息:
错误:远程解包失败:错误树对象 1234 被拒绝:文件夹“myfolder”和推送的文件夹“MyFolder”大小写不同。您必须删除或重命名其中之一或禁用大小写强制(请参阅 https://aka.ms/git-platform-compat)。到 https://urlOfRepoOnAzure ! [远程拒绝] ExportBranche -> ExportBranche(树对象 5678 被拒绝:推送的文件夹“myfolder”和文件夹“MyFolder”大小写不同。您必须删除或重命名其中一个或禁用大小写强制执行(请参阅 https:///aka.ms/git-platform-compat).) 错误:无法将一些引用推送到 https://urlOfRepoOnAzure
我删除了文件夹“myfolder”并重试。同样的错误。 但我可以毫无问题地推送到 TFS。
我不明白发生了什么事。特别是为什么推送到 Azure 被拒绝,因为我正在推送一个新分支。
最佳答案
我同意 @BernardoDuarte 的观点,即您应该能够更改有关案件执行的政策,但如果它不起作用,我会尝试通过进行更多手动更新来摆脱整个冲突:
- 将 TFS 存储库克隆到一个全新的文件夹中
- 查看您想要从中迁移的分支 (A)
- 将 Azure DevOps 存储库克隆到不同的全新文件夹中
- 创建主题分支 (B)
- 将除 myFolder 之外的所有文件夹从 (A) 复制到 (B)
- 打开 (A) 中的 myFolder,并将其所有内容复制到 (B) 中的 myFolder (B) 中的
git status
,以确保 myFolder 的文件夹大小写与 Azure DevOps 存储库中的文件夹大小写相同。- 提交您的主题分支并将其推送到 (B)
- 在 Azure DevOps 中 pull 您的主题分支请求,然后完成它。
如果您覆盖 myFolder 本身,Git 会将其作为更改进行跟踪并尝试推送它。这种方法虽然确实很笨拙,但却可以防止这种变化发生,并且应该绕过这个问题。
关于git - 无法推送到新的存储库 : The folder pushed differ in case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66157287/