【问题标题】:GitKraken adds \ufeff to the start of fileGitKraken 将 \ufeff 添加到文件的开头
【发布时间】:2019-10-06 18:25:21
【问题描述】:

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

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

【问题讨论】:

  • 您使用什么编辑器来编辑文件?这可能是您的问题的原因。
  • @bk2204,我使用 Visual Studio 2017 Enterprise。在 GitKraken 之前我使用了 SourceTree,在我从 SourceTree 切换到 GitKraken 之后,问题就出现了。所以我认为问题不是由编辑器引起的。

标签: git byte-order-mark gitkraken


【解决方案1】:

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

通常,字节顺序标记是零宽度,因此您在 GitKraken 而不是 SourceTree 中看到它的可能原因是因为 GitKraken 明确显示它,而 SourceTree 可能没有。

如果您在 Visual Studio 中将文件保存为 UTF-8,则需要手动将它们保存为“不带签名的 UTF-8”。如果您使用默认模式保存它们,则会使用 BOM 保存它们。

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

【讨论】:

    【解决方案2】:

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

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

    用你需要的任何文件类型替换cpp

    注意:参见 .gitattributes man page

    • 为了你和你所有同事的 gits(他们都应该支持)
    • 还要检查那里给定的 iconv 调用工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-20
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      相关资源
      最近更新 更多