彩票网站开发 极云,语言做网站,威海优化推广,免费seo软件推荐目录 一、Git 对文件名大小写不敏感1.1 问题描述1.2 原因分析1.3 解决方案方式一#xff1a;使用git命令进行修改方式二#xff1a;关闭git 忽略大小写配置 #xff08;可以当前项目设置#xff0c;也可以全局设置 --global#xff09; 二、新的问题#xff08;重复的目录… 目录 一、Git 对文件名大小写不敏感1.1 问题描述1.2 原因分析1.3 解决方案方式一使用git命令进行修改方式二关闭git 忽略大小写配置 可以当前项目设置也可以全局设置 --global 二、新的问题重复的目录2.1 问题描述2.2 原因分析2.3 解决方案 三、总结参考资料 一、Git 对文件名大小写不敏感
1.1 问题描述
在Windows系统里当 仅修改文件名大小写 时git未检测到文件变更
1.2 原因分析
这个行为是由文件系统的不同规则引起的。
在类Unix文件系统例如Linux和macOS上文件名是区分大小写的而在Windows文件系统上默认情况下是不区分大小写的。
git 默认对大小写敏感但是会在仓库克隆或初始化时根据当前系统来设置是否忽略大小写比如 Windows 下会设置为 true即不敏感而 Linux 中不会忽略
引用官方原文的话 The default is false, except git-clone or git-init will probe and set core.ignoreCase true if appropriate when the repository is created. 1.3 解决方案
注意如果你修改文件目录的名字后再执行方式二会出现新的问题。
我们建议用方式一修改目录后再执行方式二。或者我们执行方式二后再随便修改目录。
方式一使用git命令进行修改
使用 git mv 命令修改文件名
git mv -f [你想要删掉的文件] [你想要留下的文件]
git mv -f a.js A.js 等同于
git rm a.js
git add A.js将文件从一个目录移动到另一个目录
git mv test-dir TEST-DIR如果是重命名文件夹由于 Windows 下对文件夹的大小写也不敏感-_-所以直接使用上面的方法会失败
git mv test-dir TEST-DIR# Rename from test-dir to Test-dir/test-dir failed.这里就只有迂回一下先把文件夹命名成其他名称然后再命名为大写就行了
git mv test-dir tmp
git mv tmp TEST-DIR方式二关闭git 忽略大小写配置 可以当前项目设置也可以全局设置 --global
执行 git config core.ignorecase 查看当前配置不出意外返回true
执行 git config core.ignorecase false 修改配置关闭 git 忽略大小写配置
二、新的问题重复的目录
2.1 问题描述
假设我们将原来的 Java 目录修改 java 目录则仓库会出现以下两种现象 现象一当关闭git 忽略大小写配置后我们将 修改 push到远程仓库。这时会出现一个新的问题Java 目录和 java 目录会同时存在 github 远程仓库里面。 现象二clone和pull下来的文件却只有 java 目录。
2.2 原因分析
现象一原因github 远程仓库对大小写敏感可以区分 Java 目录 和 java
现象二原因在仓库克隆或初始化时根据当前系统来设置是否忽略大小写。因此 Java 目录 和 java 目录会冲突Java 目录里面的内容被覆盖。
2.3 解决方案
解决方案查看解决 Git 默认不区分文件名大小写和同名文件共存的问题 - 简书 (jianshu.com)
到 github 远程仓库里面手动删掉在 linux系统里git clong 仓库将重复的目录给删掉然后 push。
三、总结
在 Windows 系统里面运行 git 时我们尽量开启 git config core.ignorecase false 这一配置。
参考资料
Git 仓库中文件名大小写问题 (knightyun.github.io)
Git文件名大小写不敏感问题及解决方案 - 掘金 (juejin.cn)