【问题标题】:Git ignore BOM (prevent git diff from showing byte order mark changes)Git忽略BOM(防止git diff显示字节顺序标记更改)
【发布时间】:2014-12-01 07:58:37
【问题描述】:

我希望 git diff 不显示 BOM 更改。
此类更改通常在差异中显示为<feff>

-<feff>/*^M
+/*^M

我怎样才能让git diff 表现得这样?
最好带有命令行参数。

git --ignore-all-space(又名git -w)不能解决问题。 如果这很重要,我在 Mac OS X 上。

【问题讨论】:

  • git diff -w (--ignore-all-space) 会更好吗?
  • @VonC:不幸的是,它没有成功。
  • 好的。那我就不知道了。 Git 似乎没有触及或忽略 BOM(见 stackoverflow.com/a/6418611/6309

标签: git byte-order-mark git-diff


【解决方案1】:

使用 Git 属性过滤器

一种可能的解决方案是创建一个 BOM 过滤器,例如:

#!/bin/bash
sed '1s/^\xEF\xBB\xBF//' "$1"

将其存储在路径中的某个位置(例如removebom)并使其可执行。

然后你需要在 Git 中通过运行来配置过滤器:

$ git config diff.removebom.textconv removebom

并将您感兴趣的文件的属性(即 cpp)添加到您的存储库:

*.cpp diff=removebom

作为.gitattributes 文件。

有关该主题的更多信息,请访问:

或一次性删除 BOM

...因为,希望在您的项目中一劳永逸地删除 BOM :)

【讨论】:

  • 我看到您可能正在使用 UTF-16 BOM,那么 '1s/^\xFE\xFF//' 可能是您想要的 sed 模式...但是对于 UTF-16,BOM 可能实际上是必需的,并且您正在将整个文件转换为 UTF-8;请注意这一点。
猜你喜欢
  • 2014-04-18
  • 1970-01-01
  • 2010-12-25
  • 2011-04-24
  • 1970-01-01
  • 2018-08-14
  • 2011-10-30
  • 1970-01-01
  • 2013-01-11
相关资源
最近更新 更多