macOS大小写不敏感文件系统致Git文件重复及Linux部署失败问题
修复大小写冲突导致的Git仓库损坏问题
紧急备份
- 先将本地仓库的所有文件复制到临时目录,避免操作失误造成数据丢失。
清理Git索引与文件状态
- 临时关闭Git的大小写忽略设置(仅当前仓库生效):
git config core.ignorecase false - 列出索引中所有仅大小写不同的重复文件:
git ls-files | sort -f | uniq -i -d
修复重复文件条目
以someComponent.jsx和SomeComponent.jsx为例,按以下步骤操作:
- 将冲突文件之一重命名为临时名称(绕过macOS文件系统的大小写限制):
mv someComponent.jsx tempComponent.jsx - 移除Git索引中旧的文件条目:
git rm --cached someComponent.jsx - 将临时文件重命名为目标大小写的名称:
mv tempComponent.jsx SomeComponent.jsx - 将正确的文件名添加到Git索引:
git add SomeComponent.jsx - 检查状态确认冲突解决:
git status
解决分支检出错误
若遇到would be overwritten by checkout错误:
- 暂存当前未提交的修改(如有):
git stash - 强制检出目标分支并清理本地未跟踪文件:
git checkout --force <目标分支名> git clean -fd - 恢复暂存的修改(若之前执行了stash):
git stash pop
提交并同步修复
- 提交修复更改:
git commit -m "Fix filename case conflict: rename someComponent.jsx to SomeComponent.jsx" - 推送到远程仓库:
git push origin <当前分支名>
后续预防方案
- 在macOS上开发时,建议使用大小写敏感的磁盘镜像存储代码仓库,从根源避免此类问题。
- 重命名文件必须使用
git mv命令,确保Git正确追踪大小写变更:git mv someComponent.jsx SomeComponent.jsx
内容的提问来源于stack exchange,提问作者Kristoffer
相关产品推荐
相关产品推荐

