问题复现
1、创建一个TEST文件夹,TEST文件夹下有一个test.js文件。
2、将这个修改推送到gitee仓库上
3、修改本地文件夹的名字大小写,从TEST,修改为Test。
这个时候就出现了问题,git status命令表示,没有任何修改:
那么问题来了,导致这个问题的原因是什么?我们又该怎么修改gitee仓库上的文件夹的大小写呢?
原因分析
导致整个问题的原因是,window操作系统的文件夹包括文件,都是不区分大小写的,如下图:
我在window操作系统中,创建TEST文件夹之后,想要再创建一个Test文件夹,却被系统警告文件夹重名。
文件也一样不区分大小写。如下图:
而在linux系统中,文件夹和文件都是区分大小写的。
那么这样就会出现一个很有趣的现象。
有趣的现象
修改git配置,让git能够识别文件夹和文件名的大小写。
git config core.ignorecase false
然后我在本地,手动删除掉TEST文件夹和test.js,并创建一个Test文件夹和test.js,推送到远程仓库。
现象出现了,远程仓库中的TEST文件夹不仅没有删除,而且还多了一个Test文件夹,两个文件夹同时存在!
但是,可以看见我的本地仓库是不存在TEST文件夹的,只有Test文件夹,如下图:
如何解决大小写问题?
那么如何解决这个问题呢?
按照如下步骤操作:
-
第一步,修改git配置,让git能够识别文件夹和文件名的大小写。
-
git config core.ignorecase false
-
-
第二步,修改文件夹或文件名,比如说这里我将TEST修改为Test,然后提交推送到远程库
-
第三步,发现有趣的现象,远程库上TEST和Test文件夹同时存在,这个时候我们在本地删除掉Test文件夹,就会惊奇的发现下图:
-
明明只删除了Test文件夹以及它下面的文件,但是git却检测到了TEST文件夹和Test文件夹的同时删除。
-
第四步,只将删除TEST文件夹的更改推送到远程库,取消Test文件夹的删除。
-
如上图,远程库中的TEST文件夹成功改名为Test文件夹了。
-
第五步,将git配置还原回去,否则会引起一些其他的问题。
-
git config core.ignorecase true
-