Git 不敏感文件夹大小写
背景
在重构项目时发现了一个文件夹大小写没有规范,就在开发的时候随手改掉了,当时发现 git 中并没有记录这个改动,当时也没有注意这个细节。后面发现,编辑器一直会报错,每次切换分支后都会出现分支无法切换的问题(切换时,未修改大小写之前的文件会出现在 git 修改中)。
经过在网上的搜索后发现,原来是 mac(Linux)对文件夹的大小写默认是不敏感的,如果直接修改文件夹名,git 无法发现文件改动,但是文件确实生成了,所以git 就会在记录中复制一个相同的文件(文件名不同)。
当你使用 git push
提交代码后,你会在远端上发现两个相同的不同名文件。
解决方法
需要使用git mv [file] [newfile]
命令手动地修改文件名再改回来,
例如:
现在我有一个叫myfiles
的文件夹,我希望把它改成 myFiles
,这时候正确的做法是
git mv myfiles tmp
git mv tmp myFiles
原理是通过修改文件名称,再改回正确的名字,来提示 git 文件大小写的修改。
学到什么
不可避免的踩坑,要注意 *unix 系统对文件名大小写是不敏感的。
尽量避免老文件名的修改,在创建文件时就要规范文件名。