将git选择的二进制文件覆盖为文本

时间:2013-02-20 22:16:35

标签: git text binary

我已经看到几个问题,询问如何让git将文本文件视为二进制文件,但还没有看到相反的结果:

如何更改git选择将文本文件视为二进制文件?我有一个文本文件,在某些配置字符串中,EOT和ETX用于分离部分配置参数。

例如,源代码包含如下行:

INPUT 'ScrollRemote[EOT]no[ETX]NumDown[EOT]0[ETX]CalcWidth[EOT]no[ETX]MaxWidth[EOT]80[ETX]FetchOnReposToEnd[EOT]yes[ETX].....'

3 个答案:

答案 0 :(得分:62)

文件实际存储在Git存储库中的方式与显示时的处理方式无关。因此,git diff程序在被要求比较两个文件时,首先从存储库中获取两个完整文件,然后针对它们运行差异算法。

通常,git diff会在文件中查找不可打印的字符,如果看起来,就像文件可能是二进制文件一样,它就会拒绝显示差异。其基本原理是二进制文件差异不太可能是人类可读的,如果显示,可能会弄乱您的终端。

但是,您可以指示git diff始终使用--text选项将文件视为文本。您可以为一个diff命令指定它:

git diff --text HEAD HEAD^ file.txt

您可以通过设置包含以下内容的.gitattributes文件使Git始终使用此选项。

file.txt diff

此处的diff属性表示:

  

设置diff属性的路径被视为文本,即使它们包含通常永远不会出现在文本文件中的字节值,例如NUL。

答案 1 :(得分:6)

查看Git Attributes - 他们可以通过指定某个文件扩展名被视为文本来帮助您。

答案 2 :(得分:2)

如果你试图比较或合并文本文件,git说它们是二进制文件,它们可能只有不同的编码(例如UTF-8和ANSI)。请参阅answer I gave on this post