Git合并master到release分支失败:大小写文件名冲突且工作树干净
解决Git大小写文件名冲突导致的合并失败问题
问题本质
Windows文件系统默认不区分大小写,即便设置了core.ignorecase=true,当master分支的驼峰命名文件和release分支的全小写同名文件共存时,Git无法在Windows环境下正确识别二者为不同文件,合并时就会触发“未跟踪文件将被覆盖”的错误——即便工作树已清理干净。
修复步骤
1. 开启当前仓库的大小写敏感
先在当前仓库临时覆盖全局设置,让Git区分文件名大小写:
git config core.ignorecase false
2. 重命名冲突文件(release分支下操作)
切换到release分支,把冲突的全小写文件临时重命名,避免和master分支的驼峰文件冲突:
git mv examplefile.txt examplefile-temp.txt git commit -m "temp rename lowercase file to resolve case conflict"
3. 执行合并
现在尝试合并master分支:
git merge master
此时Git会正确识别两个大小写不同的文件,你可以根据需求选择:
- 保留其中一个文件,删除另一个;
- 手动合并两个文件的内容后,整理成符合规范的文件。
4. 清理收尾
如果要统一使用驼峰命名:
git rm examplefile-temp.txt git commit -m "remove temp lowercase file, keep camelCase version"
如果要统一使用全小写命名:
git rm ExampleFile.txt git mv examplefile-temp.txt examplefile.txt git commit -m "keep lowercase version, remove camelCase file"
5. 恢复默认设置(可选)
处理完成后,可将当前仓库的大小写敏感设置改回全局默认:
git config core.ignorecase true
后续预防
- 团队统一文件命名规范,杜绝大小写混用;
- Windows环境下新建仓库时默认开启
core.ignorecase=true,遇到跨分支大小写冲突时临时关闭该设置处理。
内容的提问来源于stack exchange,提问作者Tomáš Krupa
相关产品推荐
相关产品推荐

