0

在不区分大小写的文件系统(例如 NTFS 或 APFS)上克隆包含区分大小写文件路径(例如 /README.md 和 /readme.md)的 git 存储库时,git 只会检查其中一个冲突文件。

在 macOS 中,如何列出因不区分大小写而发生冲突的所有文件?

4

1 回答 1

0

没有内置的东西可以找到这个。 博士的评论会让你接近,可能足够接近,但可能会有点过分(尽管人们可能仍然想了解这些事情)。

例如,假设某个提交有文件:

path/TO/file1.ext
path/to/file2.ext

在您的文件系统上,只有一个path/TOpath/to可能存在。一旦其中一个存在,这两个文件将被放入同一个path/$to文件夹中,其中$to小写或大写。它们仍将是单独的文件,但将通过大小写折叠和排序和唯一破折号-c-ing 调用。

在 macOS 上,由于 Unicode 规范化,我们也可能在路径中发生冲突。Linux 认为一个名为的文件's' 'c' 'h' 'combining-umlaut' 'o' 'n'是一个文件名,而一个名为的文件's' 'c' 'h' 'o-with-umlaut' 'n'是另一个不同的文件名。macOS 默认文件系统会将这两个名称转换为通用形式,并声称这只是一个名称。(我不知道 Windows 对此做了什么。)适当的工具也应该考虑到这一点。

请注意,Git 会将每个文件单独存储在索引中,并且可以从文件系统存储文件中更新每个单独的索引条目,而与存储文件的路径名无关。所以我们可以让 Git 建立一个从内部名称到外部名称的映射,并让它自动处理这些情况。但这是一项相当大的任务。

于 2021-05-18T23:39:58.830 回答