合并冲突-出现奇怪的字符

Merge conflict -strange characters appearing

我正在开发一个 ASP.Net MVC5 项目并使用 vimdiff 作为我的合并工具。

我在 .csproj 上遇到合并冲突。这并不意外,因为文件一直在不同的分支中添加,但是合并过程似乎正在添加一些垃圾数据?

这是 csproj 在本地、基础和远程上的状态:

这是明显的合并冲突:

就 git 而言,整个文件现在是一个冲突...

<<<<<< HEAD
WHOLE CS PROJ FILE WITH CHARACTERS AT START
======
WHOLE CS PROJ FILE WITHOUT CHARACTERS AT START
>>>>>> develop

这显然使得执行适当的合并有点困难。

在尝试合并之前,我在任一分支中都看不到这些字符。

有什么想法吗?

这是一个UTF-8 BOM,表示文件编码为UTF-8。它只在文件的开头被识别,并且由于在它之前插入了 <<<<<< HEAD,它不再在文件的开头,并且已经通过不检测/不再的工具可见将文件检测为 UTF-8。

确保您用于修改文件的所有工具都同意 BOM 是否应该存在。如果他们都同意,那么就永远不会引起冲突。如果有些人在 BOM 不存在时添加,而其他人在 BOM 存在时删除,冲突是不可避免的。

您只需删除在源代码中看不到的行。 git add 文件并提交,因此您解决了冲突。