赞
踩
在Windows系统里,当 仅修改文件名大小写 时,git未检测到文件变更
这个行为是由文件系统的不同规则引起的。
git 默认对大小写敏感,但是会在仓库克隆或初始化时,根据当前系统来设置是否忽略大小写,比如 Windows 下会设置为 true
,即不敏感,而 Linux 中不会忽略;
引用官方原文的话:
The default is
false
, exceptgit-clone
orgit-init
will probe and set core.ignoreCasetrue
if appropriate when the repository is created.
注意:如果你修改文件目录的名字后,再执行方式二,会出现新的问题。
我们建议用方式一修改目录后,再执行方式二。或者,我们执行方式二后,再随便修改目录。
使用 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
--global
)执行 git config core.ignorecase
查看当前配置,不出意外,返回true
执行 git config core.ignorecase false
修改配置,关闭 git 忽略大小写配置
假设我们将原来的 Java
目录修改 java
目录,则仓库会出现以下两种现象:
现象一:当关闭git 忽略大小写配置后,我们将 修改 push到远程仓库。这时会出现一个新的问题:Java
目录和 java
目录会同时存在 github 远程仓库里面。
现象二:clone
和pull
下来的文件却只有 java
目录。
现象一原因:github 远程仓库对大小写敏感,可以区分 Java
目录 和 java
现象二原因:在仓库克隆或初始化时,根据当前系统来设置是否忽略大小写。因此, Java
目录 和 java
目录会冲突,Java
目录里面的内容被覆盖。
解决方案查看:解决 Git 默认不区分文件名大小写和同名文件共存的问题 - 简书 (jianshu.com),
在 Windows 系统里面运行 git 时,我们尽量开启 git config core.ignorecase false
这一配置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。