git默认不区分文件名大小写

我在排查 Read the Docs编译缓慢的解决建议 时,意外发现RTD编译的时候,提示了一个文件不存在的错误:

... WARNING: Include file '... mysql/installation/install_mariadb/yum_install_MariaDB' not found or reading it failed

但是我在自己的本地电脑上 make html 没有报错,并且我检查了该 install_mariadb/ 目录:

检查 install_mariadb/ 目录下文件
total 40K
-rw-r--r-- 1 huatai dialout 179 Aug  7 00:18 create_db_user
-rw-r--r-- 1 huatai dialout 564 Sep 20 23:21 MariaDB_10.11.repo
-rw-r--r-- 1 huatai dialout 579 Sep 20 16:33 MariaDB.repo
-rw-r--r-- 1 huatai dialout 110 Aug  6 22:50 mariadb_startup
-rw-r--r-- 1 huatai dialout  35 Aug  6 22:45 mysql_secure_installation
-rw-r--r-- 1 huatai dialout  91 Sep 20 16:55 rpm_install_pcre2
-rw-r--r-- 1 huatai dialout  35 Aug  6 22:39 start_mariadb
-rw-r--r-- 1 huatai dialout  35 Aug  6 22:37 yum_install_mariadb
-rw-r--r-- 1 huatai dialout  61 Sep 20 16:37 yum_install_MariaDB
-rw-r--r-- 1 huatai dialout 319 Sep 20 16:37 yum_install_MariaDB_error

可以看到一个微妙的差别,有两个类似文件名,区别仅是字母大小写区别

检查GitHub仓库,果然发现这两个同名但字母大小写差异的文件,只上传成功了一个:

../../_images/git_ignorecase.png

对于仅有大小写区别的同名文件,git只会上传一个

解决方法

如果确实想要通过文件名大小写来区别文件,并且让 git 能够识别,则需要修订 git 配置,设置对文件名大小写敏感:

配置git能够区分文件名大小写
git config core.ignorecase false

另一种方法就是严格规范文件名命名,禁止只有大小写区别的同名文件

参考