更改案例时,git merge失败并显示"Untracked working tree file"

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没有任何未提交的更改,并且在两个分支中跟踪有问题的文件(当然,在不同的名称下).

And*_*ael 5

好吧,经过一整天的挖掘,这是我找到的解决方案:

========== 情况==========

我正在我的分支“热狗”上开发

我的同事将他的工作推送到我们的 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 客户端将忽略更改,并继续检查错误名称。


bla*_*lor 2

也许这个对另一个问题的回答会有帮助;您可能只想暂时启用该选项\xe2\x80\xa6

\n\n

git mv 并仅更改目录的大小写

\n