MacOS下Git拉取含大小写差异文件报错的解决与规避方法
解决MacOS下Git处理大小写差异文件的报错问题
临时优雅解决(无需删除本地文件)
当执行git pull/checkout/cherry-pick遇到文件大小写冲突报错时,按以下步骤操作:
- 临时让Git强制区分文件名大小写:
git config core.ignorecase false - 将Git识别到的"冲突文件"暂存:
git stash push -m "temp stash case-sensitive files" - 现在可以正常执行目标Git操作(pull/checkout/cherry-pick)
- 操作完成后,恢复Git默认的大小写忽略配置(适配MacOS文件系统):
git config core.ignorecase true - 若暂存的内容不需要保留,可直接清理暂存:
git stash drop
根源规避方案
1. 检查本地磁盘格式差异
你的问题大概率和仓库所在的磁盘分区有关:Mac默认APFS是不区分大小写的,但如果你的仓库在区分大小写的APFS卷上(通过diskutil info <卷路径>查看File System Personality字段),就会和其他使用默认分区的Mac用户出现差异。
- 解决方式:将仓库迁移到不区分大小写的APFS卷,或者统一远程仓库的文件名规则。
2. 清理远程仓库的大小写冲突文件
仓库中存在仅大小写不同的文件是隐患,需彻底清理:
- 在区分大小写的环境下(或临时设置
core.ignorecase=false),删除冲突文件中的重复项(比如保留File.txt,删除file.txt) - 提交并推送到远程仓库:
git rm file.txt git commit -m "Remove duplicate case-sensitive file" git push
3. 配置Git防止提交大小写冲突文件
- 确保本地Git适配MacOS文件系统:
git config --global core.ignorecase true - 可添加pre-commit钩子(仓库根目录
.git/hooks/pre-commit),遍历待提交文件对比小写形式,若存在重复则阻止提交。
内容的提问来源于stack exchange,提问作者Peter Alfvin
相关产品推荐
相关产品推荐

