如何修复:git推送失败:文件';app.config';和文件';App.config';以防万一

如何修复:git推送失败:文件';app.config';和文件';App.config';以防万一,git,Git,我首先做了一个git svn克隆(svn repo非常庞大!),这导致了一个本地git repo(我删除了svn内容(例如,git/svn和.git/config)) 现在我想将它推送到VisualStudio托管的git,我得到了以下错误: 远程解包失败:错误树对象0DB6571B0A0437F867B536F4B411810EDAA41F0C被拒绝:文件“app.config”和文件“app.config”的大小写不同。您必须删除或重命名其中一个 这是来自终端的完全转储: $ git pus

我首先做了一个
git svn克隆(svn repo非常庞大!),这导致了一个本地git repo(我删除了svn内容(例如,git/svn和.git/config))

现在我想将它推送到VisualStudio托管的git,我得到了以下错误: 远程解包失败:错误树对象0DB6571B0A0437F867B536F4B411810EDAA41F0C被拒绝:文件“app.config”和文件“app.config”的大小写不同。您必须删除或重命名其中一个

这是来自终端的完全转储:

$ git push -u origin --all
Username for 'https://<private>.visualstudio.com': frank
Password for 'https://frank@<private>.visualstudio.com': 
Counting objects: 395082, done.
Compressing objects: 100% (97018/97018), done.
Writing objects: 100% (395082/395082), 2.29 GiB | 58.26 MiB/s, done.
Total 395082 (delta 279171), reused 395082 (delta 279171)
error: remote unpack failed: error The tree object 0db6571b0a0437f867b536f4b41810edaaa41f0c was rejected: The file 'app.config' and the file 'App.config' pushed differ in case. You must remove or rename one of them.
To https://<private>.visualstudio.com/<private>/_git/<private>
 ! [remote rejected]       master -> master (The tree object 0db6571b0a0437f867b536f4b41810edaaa41f0c was rejected: The file 'app.config' and the file 'App.config' pushed differ in case. You must remove or rename one of them.)
error: failed to push some refs to 'https://<private>.visualstudio.com/<private>/_git/<private>'
$git push-u原点--all
'的用户名https://.visualstudio.com“:弗兰克
'的密码https://frank@.visualstudio.com':
计数对象:395082,完成。
压缩对象:100%(97018/97018),完成。
写入对象:100%(395082/395082),2.29gib | 58.26mib/s,完成。
总计395082(增量279171),重复使用395082(增量279171)
错误:远程解包失败:错误树对象0DB6571B0A0437F867B536F4B41810EDAA41F0C被拒绝:文件“app.config”和文件“app.config”大小写不同。您必须删除或重命名其中一个。
到https://.visualstudio.com//_git/
! [远程拒绝]主->主(树对象0DB6571B0A0437F867B536F4B41810EDAA41F0C被拒绝:文件'app.config'和文件'app.config'大小写不同。必须删除或重命名其中一个。)
错误:无法将某些引用推送到'https://.visualstudio.com//_git/'
我不确定它是哪一个App.config,也不确定[Aa]pp.config是否在较旧的提交中

主要问题是:

  • 我怎样才能把回购协议推到一起
“次级”问题包括:

  • 如何找到此特定文件
  • 如何在较旧的提交中重命名文件
  • 我可以忽略整个文件吗
您总是可以将其中一个文件重命名为不同的名称,只是为了进入源代码管理并检查它,然后找出如何处理它们

它们可能是相同的文件,只是大小写不同,因为您当前使用的系统似乎基于区分大小写的文件系统


还有git mv[filename]命令,如果您需要为git特定地更改文件的大小写。

您总是可以将其中一个文件重命名为不同的名称,以便进入源代码管理并检查它,然后确定如何处理它们

它们可能是相同的文件,只是大小写不同,因为您当前使用的系统似乎基于区分大小写的文件系统


还有git mv[filename]命令,如果您需要为git特定地更改文件的大小写。

我可以用两种方法解决这个问题,两种方法都是独立工作的:

方法一:

首先安装“git extras”

然后使用以下方法检查树对象,以识别错误的文件:

git ls tree-r--long--full tree 0DB6571B0A0437F867B536F4B41810EDAA41F0C

之后,使用git从git附加中删除:

git删除路径/to/App.config

方法二:

我使用Azure DevOps的Git作为目标。显然有一些秘密设置;-) 关闭这些选项也能让一切正常:


我可以用两种方法解决这个问题,两种方法都是独立工作的:

方法一:

首先安装“git extras”

然后使用以下方法检查树对象,以识别错误的文件:

git ls tree-r--long--full tree 0DB6571B0A0437F867B536F4B41810EDAA41F0C

之后,使用git从git附加中删除:

git删除路径/to/App.config

方法二:

我使用Azure DevOps的Git作为目标。显然有一些秘密设置;-) 关闭这些选项也能让一切正常:


如何查找此文件?我有数百个App.configs。我会调查git mvWell,它必须和其他文件在同一个文件夹中,如果文件在不同的文件夹中,你就不会收到这个消息。因此,我首先要搜索这些文件名,找出复制文件的位置,找到要查看的正确文件。明天我将为此编写一个脚本。但是我的直觉告诉我它在一个旧的提交中,而不是在当前目录中。我想看看会出现什么。该文件在一个旧的提交中,而不是在当前版本中。我如何找到这个文件?我有数百个App.configs。我会调查git mvWell,它必须和其他文件在同一个文件夹中,如果文件在不同的文件夹中,你就不会收到这个消息。因此,我首先要搜索这些文件名,找出复制文件的位置,找到要查看的正确文件。明天我将为此编写一个脚本。但我的直觉告诉我,它在一个旧的提交中,而不是在当前目录中。我很想看看会出现什么。该文件在一个旧的提交中,而不是在当前版本中。我只是想说,如果你不想发生以下情况,就不应该关闭该设置:在不区分大小写的操作系统中,如Windows,两个名称相同但仅大写字母不同的文件夹将因此在同一分支中创建两个不同的pull请求。请注意,如果您不希望发生以下情况,则不应关闭该设置:在不区分大小写的OSs中,如Windows,因此,两个名称相同但仅大写字母不同的文件夹将在同一分支中创建两个不同的拉取请求。