无法推送到新的回购协议:推送的文件夹不同
Can't push to new repo : The folder pushed differ in case
在深入这个问题之前,先了解一下背景:
几个月前,我的团队将我们的存储库从 Team Foundation Server 迁移到 Azure DevOps。
上周,我们注意到 TFS 上的一个分支已经完成了现在需要的工作。所以我们决定将该分支带到 Azure,以避免再次进行上述工作。
我在我的机器上从 TFS 克隆了 repo,更改原点 url 以匹配 Azure 之一,然后尝试通过以下步骤推送分支:
- 从 TFS 克隆
- 从我感兴趣的分支创建一个新分支
- 添加远程源(称为 origin-azure)
- 添加一个虚拟文件并提交更改
- 将分支推送到 origin-azure
它给了我以下错误信息:
error: remote unpack failed: error The tree object 1234 was rejected: The folder 'myfolder' and the folder 'MyFolder' pushed differ in case. You must remove or rename one of them or disable case-enforcement (see https://aka.ms/git-platform-compat). To https://urlOfRepoOnAzure ! [remote rejected] ExportBranche -> ExportBranche (The tree object 5678 was rejected: The folder 'myfolder' and the folder 'MyFolder' pushed differ in case. You must remove or rename one of them or disable case-enforcement (see https://aka.ms/git-platform-compat).) error: failed to push some refs to https://urlOfRepoOnAzure
我删除了文件夹“myfolder”,然后重试。同样的错误。
但是我可以毫无问题地推送到 TFS。
我不明白这是怎么回事。尤其是为什么推送到 Azure 被拒绝,因为我正在推送一个新分支。
您可以尝试遵循 this link 并更改 Azure Repos 上有关案例执行策略的存储库设置。
我同意@BernardoDuarte 的观点,您应该能够更改有关案件执行的政策,但如果它不起作用,我会尝试通过进行更多手动更新来摆脱整个冲突:
- 将 TFS 存储库克隆到一个全新的文件夹中
- 检查您希望从 (A) 迁移的分支
- 将 Azure DevOps 存储库克隆到不同的全新文件夹
- 创建主题分支(B)
- 将除 myFolder 之外的所有文件夹从 (A) 复制到 (B)
- 打开(A)中的myFolder,将其所有内容复制到(B)中的myFolder
git status
在 (B) 中确保 myFolder 的文件夹大小写与 Azure DevOps 存储库中的相同。
- 提交主题分支并将其推送到 (B)
- 在 Azure DevOps 中拉取您的主题分支,然后完成它。
如果您覆盖 myFolder 本身,Git 会将其作为更改进行跟踪并尝试推送它。这种方法虽然笨拙,但可以防止这种变化发生,并且应该绕过这个问题。
在深入这个问题之前,先了解一下背景:
几个月前,我的团队将我们的存储库从 Team Foundation Server 迁移到 Azure DevOps。 上周,我们注意到 TFS 上的一个分支已经完成了现在需要的工作。所以我们决定将该分支带到 Azure,以避免再次进行上述工作。
我在我的机器上从 TFS 克隆了 repo,更改原点 url 以匹配 Azure 之一,然后尝试通过以下步骤推送分支:
- 从 TFS 克隆
- 从我感兴趣的分支创建一个新分支
- 添加远程源(称为 origin-azure)
- 添加一个虚拟文件并提交更改
- 将分支推送到 origin-azure
它给了我以下错误信息:
error: remote unpack failed: error The tree object 1234 was rejected: The folder 'myfolder' and the folder 'MyFolder' pushed differ in case. You must remove or rename one of them or disable case-enforcement (see https://aka.ms/git-platform-compat). To https://urlOfRepoOnAzure ! [remote rejected] ExportBranche -> ExportBranche (The tree object 5678 was rejected: The folder 'myfolder' and the folder 'MyFolder' pushed differ in case. You must remove or rename one of them or disable case-enforcement (see https://aka.ms/git-platform-compat).) error: failed to push some refs to https://urlOfRepoOnAzure
我删除了文件夹“myfolder”,然后重试。同样的错误。 但是我可以毫无问题地推送到 TFS。
我不明白这是怎么回事。尤其是为什么推送到 Azure 被拒绝,因为我正在推送一个新分支。
您可以尝试遵循 this link 并更改 Azure Repos 上有关案例执行策略的存储库设置。
我同意@BernardoDuarte 的观点,您应该能够更改有关案件执行的政策,但如果它不起作用,我会尝试通过进行更多手动更新来摆脱整个冲突:
- 将 TFS 存储库克隆到一个全新的文件夹中
- 检查您希望从 (A) 迁移的分支
- 将 Azure DevOps 存储库克隆到不同的全新文件夹
- 创建主题分支(B)
- 将除 myFolder 之外的所有文件夹从 (A) 复制到 (B)
- 打开(A)中的myFolder,将其所有内容复制到(B)中的myFolder
git status
在 (B) 中确保 myFolder 的文件夹大小写与 Azure DevOps 存储库中的相同。- 提交主题分支并将其推送到 (B)
- 在 Azure DevOps 中拉取您的主题分支,然后完成它。
如果您覆盖 myFolder 本身,Git 会将其作为更改进行跟踪并尝试推送它。这种方法虽然笨拙,但可以防止这种变化发生,并且应该绕过这个问题。