Bootstrap

windows和git不区分文件名大小写问题


windows系统默认不区分文件名大小写,但是Linux系统是区分文件大小写的。我们使用windows系统开发,将代码推送到Linux代码库,但是其他Linux开发者也是区分大小写的就导致可能出现,Linux开发者创建同名但大小写不同的两个文件,推送至Linux代码库,这一过程是没问题的,但是windows开发者克隆代码的时候只会克隆其中一个文件,这样就出现问题了。
解决:

  • 法一:开发者规范文件命名,统一小驼峰或大驼峰
  • 法二:Windows开发者设置区分大小写(这里探究)

windows不区分大小写

Windows 文件系统在默认情况下是不区分大小写的,这意味着文件名 example.txt 和 Example.txt 被视为同一个文件。Windows 文件系统FAT(File Allocation Table)不区分大小写。

windows设置区分文件大小写

官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/case-sensitivity

  • 检查当前目录是否区分大小写

    fsutil file queryCaseSensitiveInfo <path>
    

    <path> 替换为目录。

  • 修改区分大小写(需要管理员身份)

    fsutil file setCaseSensitiveInfo <path> enable
    
  • 将目录更改回默认设置不区分大小写(需要管理员身份)

    fsutil.exe file setCaseSensitiveInfo <path> disable
    

    目录必须为空,才能更改该目录的区分大小写标志属性。

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
    
;