前因
今天在写需求的时候,看到组件的文件夹为小写,所以打算将其改为大写开头,使用了以下操作:
1 | ## 查看git忽略大小写情况 |
然后在本地将文件夹的命名进行了修改操作,add -> commit -> push,一顿操作后将修改推送到了远端。
后来在部署测试环境的时候遇到了报错,大致意思就是“文件重复了,它们仅仅文件夹的大小写不同”,我到仓库一看,果然有两个文件夹:
解决方法
在网上寻找了两种解决方法,如下:
方法一
1 | ## 关闭忽略大小写 |
方法二
删除本地所有待修正文件夹,然后在待commit列表中,会发现有大写,也有小写文件夹下的文件,均处于删除状态
将想要删除的文件夹add到暂存区
commit -> push
将不想删除的文件夹从工作区撤回
问题原因
由于Windows和Mac系统默认是不区分大小写的,但是Linux是区分大小写的。
所以当我们将将文件夹的名称由小写改成大写后,对于Windows和Mac系统来说,文件是没有变化的。
也因此,在修改命名为大写后,执行git status
的结果中,显示只增加了一些文件,该删除的文件并没有显示被删除,所以当我们在这种情况下commit一条记录后,实际上git中原来的小写文件夹并没有被删除,而是大写和小写共存了。
此时将记录push到远程,由于服务器一般都是Linux系统,所以可以将大写和小写文件夹一同展示出来。所以就出现了这个文件夹重复的问题。
当然,这个原因也有我个人的猜测在里面,毕竟没有去刨git的源码😂。
最后
git默认是忽略大小写的,建议保留默认配置,不要随意修改,避免出现不必要的麻烦。
文件夹命名也可以使用“中划线”的形式,这样就不会有文件夹大小写的问题。