You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git批量修改文件名大小写后:如何确保仓库与本地文件一致?

解决Git文件名大小写不一致的问题

我之前在跨平台开发时也碰到过一模一样的问题——本地用的是大小写不敏感的系统(比如macOS或Windows),改了文件名大小写后本地没影响,但推到Linux服务器或者其他用大小写敏感系统的同事拉取后就出问题了。下面是我亲测有效的解决步骤:

第一步:找出所有大小写不一致的文件

Git本身可以帮我们识别这类问题,这里有两个实用的命令:

方法1:直接列出重复的文件名(忽略大小写)

运行以下命令,会输出所有在Git中被视为同一文件但实际大小写不同的文件名:

git ls-files --stage | awk '{print $4}' | sort -f | uniq -i -d
  • git ls-files --stage:列出Git索引中所有文件的详细信息
  • awk '{print $4}':提取输出中的文件名部分
  • sort -f:忽略大小写进行排序
  • uniq -i -d:找出忽略大小写后重复的文件名

方法2:让Git识别出大小写重命名的变化

如果本地已经手动修改了文件名大小写但Git没检测到,可以先重置索引再重新添加,让Git识别出重命名:

git rm -r --cached .
git add --all .
git diff --name-only --diff-filter=R

这个命令会显示所有被Git识别为“重命名”的文件(包括仅大小写变化的情况)。放心,git rm --cached只会移除Git索引中的记录,不会删除本地文件。

第二步:修正文件名大小写

找到问题文件后,用git mv命令来正式修改Git中的文件名,确保和本地文件一致。比如原来的文件是ReadMe.md,本地已经改成readme.md,就运行:

git mv ReadMe.md readme.md

注意:不要手动修改文件名后再让Git识别,直接用git mv能确保Git正确记录这个重命名操作,避免后续的冲突。

第三步:提交并推送修改

修正完所有文件后,提交这些变化:

git commit -m "Fix filename case inconsistencies to match local filesystem"

然后推送到远程仓库:

git push

后续避免问题的建议

  • 跨平台开发时统一文件名规范:比如全部用小写字母,或者遵循特定的命名规则,从根源上避免大小写问题。
  • 修改文件名大小写时用git mv:不要手动修改文件名,直接用Git命令操作,确保Git能追踪到变化。
  • 配置Git的大小写敏感设置:在Windows/macOS上,Git默认core.ignorecase=true(适配本地文件系统),不要随意改成false,否则可能导致本地文件冲突;Linux上默认是false,保持默认即可。

内容的提问来源于stack exchange,提问作者dknaack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:30:25