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

Ron*_*ldB 55 git binary text

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

  • 这不适用于合并.并且设置'merge'属性似乎也不起作用. (8认同)

Mar*_*her 6

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