繁体   English   中英

Git:列出在克隆期间发生冲突的区分大小写的路径

[英]Git: list case-sensitive paths that have collided during clone

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

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

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

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

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'的文件视为一个文件名's' 'c' 'h' 'o-with-umlaut' 'n'是第二个不同的文件名。 macOS 默认文件系统会将这两个名称转换为通用形式,并声称这只是一个名称。 (我不知道 Windows 对此做了什么。)适当的工具也应该考虑到这一点。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM