ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

解决 Git 不区分大小写导致的文件冲突问题

2022-02-17 19:32:52  阅读:318  来源: 互联网

标签:git 区分 test Git 大小写 Test


有些同学在 Git 仓库对文件/文件夹进行命名时,刚开始是小写,后来为了保持团队一致,又改成了大写,然而 git 不会发现大小写的变化,此时就出了问题:导致仓库里出现了 大小写 同时存在的两个文件。但在 Windows、Mac的电脑磁盘里,肉眼却能看到一个文件,实在奇葩。

问题复现路径

(1)新建一个 test 文件(大小写不敏感的状态下),并提交。

(2)本地修改 test 变为 Test,文件内容无变更,无法提交。

(3)执行 git config core.ignorecase false,设 置Git的规则为 区分大小写(大小写敏感),然后 git push 提交,查看结果,此时远程仓库会存在 大小写 同时存在的文件,但本地仓库却只看到其中一个文件。

(4)甚至可能出现这种异常情况:本地暂存区的文件,怎么删也删不掉。

错误的解决办法

git mv test Test

执行上面的命令时,会报错:fatal: renaming 'Test' failed: Invalid argument

正确的解决办法

# 将本地的 test、Test 目录都删掉,并生成一个新的目录 Temp
git mv Test Temp

# 将 Temp 目录改成 Test 目录。此时,项目中只会存在 Test 目录,不会存在 test 目录。目标达成。
git mv Temp Test 

执行完上面的两个命令之后,项目中只会存在 Test 目录,不会存在 test 目录。目标达成。

关于 是否区分大小写 的补充说明

我们知道:针对文件/文件夹,Windows 系统和 Mac 系统是不区分大小写的;Linux 系统是区分大小写的;Git 默认是不区分大小写的,也可以通过改配置项,改为区分大小写。

不分区大小写,也有它的好处,比如:文件夹/文件的路径,很多时候就代表了网站地址、页面url的路径。而网站地址也是不区分大小写的,这是很关键的原因之一。

关于 Git是否区分大小写 的补充

前面讲到,Git 默认是不区分大小写的,可以通过命令git config --get core.ignorecase查到,默认值是 true。

我们也可以修改 Git 的这一配置项,改为区分大小写,配置命令为git config core.ignorecase false

但我建议你保留 Git 的默认配置项,不要随意自行修改,避免产生其他的麻烦。

参考链接

标签:git,区分,test,Git,大小写,Test
来源: https://www.cnblogs.com/qianguyihao/p/15906060.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有