windows下git大小写不敏感问题处理
git也用了挺久,今天才碰到这个大坑,关于文件夹名称大小写的问题,顺手记录下解决过程。
问题现象:
今天更新代码之后,发现出现了一部分未未提交代码,并且包路径错误。不管是还原操作,还是手动修改后都不能提交。排查了半天,发现git仓库里边有两个一样的文件加,唯一的区别是一个字母大小写不一样。一个是Abc,另外一个abc。原来是有同学代码包命名写成了大写,发现有问题之后重构成小写,但是提交到git之后,Abc保留了下来,也就是说git仓库同时存在Abc和abc两个文件夹。我这边更新代码之后下载到了Abc的,导致本地代码报错。
原因分析:
windows的文件系统和git默认都是大小写不敏感的,也就是说,如果其它人设置了大小写敏感,同时提交了Abc和abc两个文件或者文件夹上去,我们在windows下,只能拉取到Abc。一搬情况下,不要去修改git的默认大小写设置,不然你提交了上边这种代码上去,对于其他人来说就是个大坑~~
解决方式:
因为是代码重构,Abc这个包是多余的,我们只需要删除掉这个,保留abc就可以了。删除的前提是我们能拉取到完整代码,并且让git能够区分大小写。
下面以简单说下操作流程,win11下下用管理员方式打开cmd或者powershell或者windows terminal
新建一个目录
1
2mkdir d:/codefix
cd d:/codefix将当前目录启用文件夹区分大小写支持.
1
fsutil file SetCaseSensitiveInfo d:/codefix enable
//如果正常,会提示:已启用目录 d:\codefix 的区分大小写属性。记住要保证*目录是空的,并且是管理员权限操作,否则会报错
修改git设置,让git可以区分大小写
1
git config core.ignorecase false
然后拉取你要处理的代码。
1
git clone https://你的仓库地址
就会发现,Abc和abc同时下载下来了,在文件系统和ide工具种都可以正常展示两个目录
然后可以用ide工具或者git命令删除要删除的目录,然后重新提交代码就ok了
找到问题之后,解决起来还是比较简单的。但是,还是要记得,最好不要修改git和系统大小写设置。不然可能无意间就给别人挖了个坑