我已经看到几个问题,询问如何让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].....'
Run Code Online (Sandbox Code Playgroud)
Gre*_*ill 69
文件实际存储在Git存储库中的方式与显示时的处理方式无关.因此git diff,当程序要求比较两个文件时,首先从存储库中获取两个完整文件,然后针对它们运行差异算法.
通常,git diff在文件中查找不可打印的字符,如果文件看起来可能是二进制文件,则拒绝显示差异.其基本原理是二进制文件差异不太可能是人类可读的,如果显示,可能会弄乱您的终端.
但是,您可以指示git diff始终使用该--text选项将文件视为文本.您可以为一个diff命令指定:
git diff --text HEAD HEAD^ file.txt
Run Code Online (Sandbox Code Playgroud)
您可以通过设置.gitattributes包含以下内容的文件使Git始终使用此选项:
file.txt diff
Run Code Online (Sandbox Code Playgroud)
diff这里的属性意味着:
diff设置属性的路径被视为文本,即使它们包含通常永远不会出现在文本文件中的字节值,例如NUL.