Binary File

为什么windows下文本文件被检测为二进制文件?

当您将文本文件存储为 UTF-8 时,Git 效果最佳。Windows 上的许多程序都支持 UTF-8,但有些程序不支持,并且仅使用小端 UTF-16 格式,Git 将其检测为二进制文件。如果您无法在程序中使用 UTF-8,则可以指定一个工作树编码,指示应使用哪个编码签出您的文件,同时仍将这些文件作为 UTF-8 存储在存储库中。这允许像 git-diff这样的工具按预期工作,同时仍允许您的工具工作。

为此,您可以使用具有 working-tree-encoding 属性的 gitattributes 模式。例如,以下模式将所有 C 文件设置为使用 UTF-16LE-BOM,这是 Windows 上常见的编码

*.c	working-tree-encoding=UTF-16LE-BOM

您需要运行 git add --renormalize 以使其生效。请注意,如果您在跨平台使用的项目上进行这些更改,您可能希望在按用户配置的文件中或在 $GIT_DIR/info/attributes 中进行更改,因为在存储库中的 .gitattributes 文件中进行更改将适用于存储库的所有用户。

另请参阅以下条目以获取有关规范换行符的信息,并参阅 gitattributes以获取有关属性文件的更多信息。

via https://gitfaq.org/1/01/how-do-i-add-only-a-portion-of-a-file/