Sta*_*asM 6 git macos case-insensitive branching-and-merging
在Mac OS X上,我有两个分支 - 比如A和B - 我想将A合并到B.当我尝试git merge A在B 上做时,我得到:
error: Untracked working tree file 'path/file.php' would be overwritten by merge. Aborting
Run Code Online (Sandbox Code Playgroud)
这是因为A中的某些更改重命名了文件 - 即B有文件path/File.php而A重命名为path/file.php.由于Mac OS X文件系统不区分大小写,因此可能会混淆git.有没有办法让git正确合并?
更新:为了澄清,分支B没有任何未提交的更改,并且在两个分支中跟踪有问题的文件(当然,在不同的名称下).
好吧,经过一整天的挖掘,这是我找到的解决方案:
========== 情况==========
我正在我的分支“热狗”上开发
我的同事将他的工作推送到我们的 master 分支,包括一个名为“Hamburgersrule”的文件
我将 master 合并到我的 Hotdog 分支中。
我的同事将“Hamburgersrule”更改为“HamburgersRule”,并将其推送到master。
========== 问题==========
当我尝试在 Hotdog 和 Master 之间切换时,Git 认为发生了一些变化。HamburgersRule 的情况看起来与 Git 不同,但 windows 认为它很好。每次我尝试合并或检出另一个分支时,Git 都会警告我我将丢失未暂存的文件。
我可以通过将 git config core.ignorecase 设置为 true 来抑制该消息,但潜在的问题仍然存在,而忽略大小写差异首先使我们陷入困境。
========== 解决方案==========
1: 对 Master 进行三次重命名(以确保新文件名正确) HamburgersRule -> HamburgersRule_Rename -> HamburgersRule
2:将更改合并到 Hotdog Branch。要使合并工作,您需要删除您的“Hamburgersrule”版本(使用您的操作系统,而不是 git)
3:清理Hotdog上剩余的文件。检查合并是否按预期工作。您可能需要从 Master 分支签出 HamburgersRule:
git checkout master HamburgersRule
编辑:重要说明。如果您不想一遍又一遍地解决此问题,请确保您的同事都将 ignorecase 设置为 false
git config core.ignorecase false
如果有人忽略区分大小写,他们的 git 客户端将忽略更改,并继续检查错误名称。