GitKraken 将 \ufeff 添加到文件的开头

GitKraken adds \ufeff to the start of file

当我将提交推送到 Bitbucket 并创建拉取请求时,我可以在差异中看到 weird symbol (\ufeff) 被添加到新创建文件的开头。

我不希望 GitKraken 添加任何额外的符号,因此提交将是纯粹的。如何实现?

默认情况下,当Visual Studio写入文件时,无论是UTF-16还是UTF-8,它都会在文件的开头写入一个字节顺序标记(BOM,U+FEFF)。使用 UTF-16 时需要此标记,但普遍认为将其写入 UTF-8 文件中是个坏主意。

通常,字节顺序标记是 zero-width,所以您在 GitKraken 而不是 SourceTree 中看到它的可能原因是因为 GitKraken 明确显示它,而 SourceTree 可能没有。

如果您将文件保存为 Visual Studio 中的 UTF-8,您需要手动将它们保存为 "UTF-8 without signature"。如果您使用默认模式保存它们,它会使用 BOM 保存它们。

或者,您可以在项目中添加 .editorconfig file,将默认字符集设置为 utf-8。这将指示 Visual Studio 不要在您的文件中写入 BOM。如果您的项目不愿意采用这样的文件,您可以自己创建一个并通过在 .git/info/exclude.

中的它自己的行中添加 .editorconfig 来忽略它

在最近的 git 中,将以下内容添加到 .gitattributes 应该可以解决您的问题:

 *.cpp text working-tree-encoding=UTF-8 eol=CRLF

cpp替换为您需要的任何文件类型

注:见.git属性man page

  • 为了您和您所有同事的 git(他们应该都支持)
  • 还要检查 iconv 那里的呼叫工作