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
那里的呼叫工作
当我将提交推送到 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
那里的呼叫工作