平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“windows和git不区分文件名大小写问题及解决”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
- 法一:开发者规范文件命名,统一小驼峰或大驼峰
- 法二:Windows开发者设置区分大小写(这里探究)
windows不区分大小写
从实现思路看,Windows 文件系统在默认情况下是不区分大小写的,这意味着文件名 example.txt 和 Example.txt 被视为同一个文件。
理解这一步时,Windows 文件系统FAT(File Allocation Table)不区分大小写。
windows设置区分文件大小写
官方文档:(链接已移除)
检查当前目录是否区分大小写
fsutil file queryCaseSensitiveInfo
将 替换为目录。
修改区分大小写(需管理员身份)
fsutil file setCaseSensitiveInfoenable
将目录更改回默认设置不区分大小写(需管理员身份)
fsutil.exe file setCaseSensitiveInfodisable
目录必须为空,才能更改该目录的区分大小写标志属性。
git不区分大小写
结合项目来看,在Windows系统里,当 仅修改文件名大小写 时,git未检测到文件变更。
这个行为是由文件系统的不同规则引起的:
- 实际处理时,在类Unix文件系统(比如Linux和macOS)上,文件名是区分大小写的
- 而在Windows文件系统上,默认情况下是不区分大小写的
git 默认对大小写敏感,但是会在仓库克隆或初始化时,根据当前系统来设置是否忽略大小写
git设置区分文件大小写
检查当前git是否区分大小写
git config core.ignorecase
false:区分大小写true:不区分大小写
从实现思路看,将 Git 设置为区分大小写 (FOO.txt ≠ foo.txt),请输入:
git config core.ignorecase false
理解这一步时,要将 Git 设置为不区分大小写 (FOO.txt = foo.txt),请输入:
git config core.ignorecase true
总结
实际处理时,总的来说,git文件名适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。
