Git代码管理 之 文件夹/文件修改大小写问题

问题复现

1、创建一个TEST文件夹,TEST文件夹下有一个test.js文件。

image

2、将这个修改推送到gitee仓库上

image

3、修改本地文件夹的名字大小写,从TEST,修改为Test。

image

这个时候就出现了问题,git status命令表示,没有任何修改:

image

那么问题来了,导致这个问题的原因是什么?我们又该怎么修改gitee仓库上的文件夹的大小写呢?


原因分析

导致整个问题的原因是,window操作系统的文件夹包括文件,都是不区分大小写的,如下图:

image

我在window操作系统中,创建TEST文件夹之后,想要再创建一个Test文件夹,却被系统警告文件夹重名。

文件也一样不区分大小写。如下图:

image

而在linux系统中,文件夹和文件都是区分大小写的。

那么这样就会出现一个很有趣的现象。


有趣的现象

修改git配置,让git能够识别文件夹和文件名的大小写。

git config core.ignorecase false

然后我在本地,手动删除掉TEST文件夹和test.js,并创建一个Test文件夹和test.js,推送到远程仓库。

image

现象出现了,远程仓库中的TEST文件夹不仅没有删除,而且还多了一个Test文件夹,两个文件夹同时存在!

但是,可以看见我的本地仓库是不存在TEST文件夹的,只有Test文件夹,如下图:

image


如何解决大小写问题?

那么如何解决这个问题呢?

按照如下步骤操作:

  • 第一步,修改git配置,让git能够识别文件夹和文件名的大小写。

    • git config core.ignorecase false
      
  • 第二步,修改文件夹或文件名,比如说这里我将TEST修改为Test,然后提交推送到远程库

  • 第三步,发现有趣的现象,远程库上TEST和Test文件夹同时存在,这个时候我们在本地删除掉Test文件夹,就会惊奇的发现下图:

    • image

    • 明明只删除了Test文件夹以及它下面的文件,但是git却检测到了TEST文件夹和Test文件夹的同时删除。

  • 第四步,只将删除TEST文件夹的更改推送到远程库,取消Test文件夹的删除。

    • image

    • image

    • 如上图,远程库中的TEST文件夹成功改名为Test文件夹了。

  • 第五步,将git配置还原回去,否则会引起一些其他的问题。

    • git config core.ignorecase true
      
posted @ 2022-11-08 11:17  笔下洛璃  阅读(2790)  评论(0编辑  收藏  举报