使用git签入对UTF8 BOM的更改

使用git签入对UTF8 BOM的更改,git,utf-8,byte-order-mark,Git,Utf 8,Byte Order Mark,我不小心从Windows签入了一个utf8编码的文本文件,之前没有删除BOM表。现在我尝试在更高版本中删除它,并再次签入此更改。git似乎忽略了对BOM字节的更改。有没有设置让git让我按原样签入文件?(我知道在行尾方面也有类似的问题——这是一个设置…如果您找不到合适的解决方案,您可以随时向文件添加字符、提交、删除BOM表和字母,并修改提交。如果您可以使此重复,请务必报告错误 这是我的两分钱: xxd -r > raw <<< "0000000: 4865 c582 c3

我不小心从Windows签入了一个utf8编码的文本文件,之前没有删除BOM表。现在我尝试在更高版本中删除它,并再次签入此更改。git似乎忽略了对BOM字节的更改。有没有设置让git让我按原样签入文件?(我知道在行尾方面也有类似的问题——这是一个设置…

如果您找不到合适的解决方案,您可以随时向文件添加字符、提交、删除BOM表和字母,并修改提交。

如果您可以使此重复,请务必报告错误

这是我的两分钱:

xxd -r > raw <<< "0000000: 4865 c582 c397 c3b8 0a                   He......."
cat raw # shows "Heł×ø" in UTF8 terminals

git init .
iconv -t UTF32BE raw  > test
git commit -am nobom test
iconv -t UTF32 raw  > test
git diff # reports: "Binary files a/test and b/test differ"
git commit -am bom test
或者,稍微直接一点

for h in $(git rev-list --all -- test); do git ls-tree $a; done
100644 blob 2e54d36463fee81e89423d7d80ccc5d7003aba21    test
100644 blob 2e54d36463fee81e89423d7d80ccc5d7003aba21    test
这是使用64位ubuntu上的Git1.7.4.1实现的



git不会忽略字节顺序标记(BOM)序列,git只可以提交BOM删除。使用XMLUTF-8进行测试

通过文件->另存为->编码保存->Unicode(不带签名的UTF-8)删除Visual Studio 2017中Windows上的BOM表。git看到了一个变化,它可以被提交


git单独保留BOM字符。您确定要删除您认为是的角色吗?你是如何做到这一点的?是什么让你认为git忽略了这个变化??什么。让我们先确定问题是否存在exists@sehe你说得对。使用GitV1.7.4,我能够提交一个UTF-8编码的文件,只删除了BOM表。非常感谢您向我介绍如何解决这个问题。事实上,git不会更改BOM字符。这是我在windown机器上的编辑器出了问题非常感谢。
for h in $(git rev-list --all -- test); do git ls-tree $a; done
100644 blob 2e54d36463fee81e89423d7d80ccc5d7003aba21    test
100644 blob 2e54d36463fee81e89423d7d80ccc5d7003aba21    test
xxd test # no bom:
0000000: 0000 0048 0000 0065 0000 0142 0000 00d7  ...H...e...B....
0000010: 0000 00f8 0000 000a                      ........

xxd test # with bom
0000000: fffe 0000 4800 0000 6500 0000 4201 0000  ....H...e...B...
0000010: d700 0000 f800 0000 0a00 0000            ............