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

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

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值