我已经看到几个问题,询问如何让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].....'
答案 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。