当前位置:   article > 正文

linux git 大小写,git忽略文件名大小写的解决办法

git clone 忽略大小写

好吧,在开发中遇到一个问题:

ide直接修改文件名的大小写,但是git忽略文件名大小写的解决办法

我在Android  Studio通过ide的修改文件名功能将一个”helloworld.java”的文件改名为”HelloWorld.java”。但是每次从git服务器上clone的时候,发现文件名又还原成了”helloworld.java”。导致项目报错。

每次手动修复只是治标,没有治本。

重现问题:

1.先创建一个TestGitIgnorecase,然后在里面创建一个helloworld.java。然后commit到本地仓库。

2.通过android studio的refactor里的rename选项将helloworld.java改名为HelloWorld.java。然后share到github上。

3.再从github上clone到本地,然后你会发现你clone的项目中,文件名依旧是helloworld.java。

更简单的重现:

假设hello.txt已经提交到仓库了,然后执行下面的操作:

$mv  hello.txt Hello.txt

$git status

On branch master

nothing to commit, working directory clean

够奇怪了吧!

问题的分析:

从上面的问题,可以看到,git貌似是忽略了文件名的大小写的。也就是说,它认为两个是一样的。

git config中有个core.ignorecase设置,用来设置是否忽略大小写。

git分为本地和服务器,git本地是win系统,而服务器是linux。

先在本地查询core.ignorecase配置:

>git  config  –get core.ignorecase

true

或者查git的全局设置:

>git config –global –get core.ignorecase

再去服务器查询:

$git  config  –get core.ignorecase

没有返回结果

已知的大小写不敏感的系统

windows

osx

比如在mac下,可以查看当前文件系统是否支持大小写敏感:

$diskutil info /

显示:

File System Personality:  Journaled HFS+

Type (Bundle):            hfs

Name (User Visible):      Mac OS Extended (Journaled)

如果看到“Case-sensitive Journaled HFS ”,说明是支持大小写敏感的。

或者是:

$touch   ab1

$touch    aB1

$ls a*

如果显示1个文件,则说明是不支持大小写敏感

如果显示2个文件,则说明是支持大小写敏感的

尝试解决办法:

方法一:

在本地仓库中,执行

git mv helloworld.java  Temp.java

git mv Temp.java HelloWorld.java

然后提交此次更改,提示:

Commit failed with error:

Will not add file alias ‘app/src/main/java/info/dabu/testgitignorecase/HelloWorld.java’ (‘app/src/main/java/info/dabu/testgitignorecase/helloworld.java’ already exists in index)

结果:失败了

方法二:

本地将HelloWorld.java拷贝到其他地方,然后执行:

>git  rm -f HelloWorld.java

删除成功后,再将这个HelloWorld.java拷贝会原来的目录,在将这个文件commit和push到github上。

结果:问题解决

方法三:

修改本地仓库的git config中的core.ignorecase设置。win下这个设置貌似默认是true。我们将其改为false。可以去config文件修改也可以直接命令修改

>git config  core.ignorecase false

设置git全局的core.ignorecase:

>git config –global core.ignorecase false

建议

通过上面的实例,我的建议就是别用系统的(ide也是使用系统的)的改名功能。而应该使用git mv来修改文件名。或者是将git config的core.ignorecase设置为false。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/678946
推荐阅读
相关标签
  

闽ICP备14008679号