Git踩坑---文件名大小写

关于 git 大小写问题的解决办法
写在前面:
最近,在项目部署的时候,总是遇到一些很灵异的问题,比如在 merge 没有报错的情况下,文件没有更新, 特殊的文件突然被还原至之前的某个版本……最后发现问题所在,是之前的一次 文件名大小写 引起的问题。解决过程其实还是挺糟心的(自己埋的坑要自己填……),深刻体会到好的规范比好的技术其实更重要。同时也觉得,有必要记录一下,谨防下次掉进去。

问题复现:


1.新建一个 a.js 文件(大小写不敏感的状态下),并提交
2.修改本地 a.js 变为 A.js,文件内容无变更,无法提交
3.执行git config core.ignorecase false,修改 大小写敏感 规则,然后提交,查看结果,此时会存在 大小写 同时存在的文件
4.此时某种机缘下,再次执行 git config core.ignorecase true,大小写不敏感,
5.此时执行 git push , 即把最新的更新都更新到了 a.js
6.此时再修改 大小写敏感规则为敏感, 执行 git pull ,并不会拿到最新的更新。比如自己想要的是第一次修改后的 A.js ,但是服务器有一个没有更新的 A.js 和 有更新的 a.js,而你只能拿到前者,所以就会遇到各种各样的坑……


解决办法:
执行git config --global core.ignorecase false,全局设置 大小写敏感 。

因为 git 默认大小写不敏感,所以最好添加项目配置文件,设置 大小写敏感。

touch .gitconfig
git config core.ignorecase false

 

总结:
其实看解决办法的话,只是一个很小的问题,但是出现的 bug 确实是让人很头疼的,因为 mac windows 在不设置大小写敏感规则的时候默认大小写是不敏感,项目部署的机器是 Linux 的,而 Linux 是大小写敏感的。所以这样的问题平时不易发现,本地调试的时候大部分时候并不会出错误,只有在项目部署的时候问题才会显示出来。


 

发布了68 篇原创文章 · 获赞 32 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/Web_J/article/details/88998109