Web/00-前端工具/04-解决 Git 不区分大小写导致的文件冲突问题.md

59 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 解决 Git 不区分大小写导致的文件冲突问题
- 文章发布时间2022-02-17
- 作者@千古壹号
有些同学在 Git 仓库对文件/文件夹进行命名时刚开始是小写后来为了保持团队一致又改成了大写然而 git 不会发现大小写的变化此时就出了问题导致仓库里出现了 大小写 同时存在的两个文件但在 WindowsMac的电脑磁盘里肉眼却能看到一个文件实在奇葩
### 问题复现路径
1新建一个 test 文件(大小写不敏感的状态下)并提交
2本地修改 test 变为 Test文件内容无变更无法提交
3执行 `git config core.ignorecase false` 置Git的规则为 区分大小写大小写敏感然后 git push 提交查看结果此时远程仓库会存在 大小写 同时存在的文件但本地仓库却只看到其中一个文件
4甚至可能出现这种异常情况本地暂存区的文件怎么删也删不掉
### 错误的解决办法
```bash
git mv test Test
```
执行上面的命令时会报错`fatal: renaming 'Test' failed: Invalid argument`
### 正确的解决办法
```bash
# 将本地的 test、Test 目录都删掉,并生成一个新的目录 Temp
git mv Test Temp
# 将 Temp 目录改成 Test 目录。此时,项目中只会存在 Test 目录,不会存在 test 目录。目标达成。
git mv Temp Test
```
执行完上面的两个命令之后项目中只会存在 Test 目录不会存在 test 目录目标达成
### 关于 是否区分大小写 的补充说明
我们知道针对文件/文件夹Windows 系统和 Mac 系统是不区分大小写的Linux 系统是区分大小写的Git 默认是不区分大小写的也可以通过改配置项改为区分大小写
不分区大小写也有它的好处比如文件夹/文件的路径很多时候就代表了网站地址页面url的路径**网站地址也是不区分大小写的**这是很关键的原因之一
### 参考链接
- [Mac git 大小写问题的解决方案](https://shanyue.tech/bug/mac-git-ignorecase.html)
- [git 大小写问题 踩坑笔记](https://blog.csdn.net/u013707249/article/details/79135639)
### 关于 Git是否区分大小写 的补充
前面讲到Git 默认是不区分大小写的可以通过命令`git config --get core.ignorecase`查到默认值是 true
我们也可以修改 Git 的这一配置项改为区分大小写配置命令为`git config core.ignorecase false`
但我建议你**保留 Git 的默认配置项**不要随意自行修改避免产生其他的麻烦