Git:使文本文件成为二进制文件,同时仍显示文本差异

Git:使文本文件成为二进制文件,同时仍显示文本差异,git,Git,我的repo中有一些特殊的文件,虽然它们是文本文件,但在.gittributes中被标记为二进制文件,因此如果发生冲突,它们不会自动合并:我需要在文件的一个版本或另一个版本之间进行选择。(*) 但是,显示这些文件的文本差异仍然很有用,以便做出决定或查看不同提交之间的更改。 我可以使用外部diff工具来实现这一点,github实际上显示了文本diff,但我想知道是否可以配置git,使其内部diff工具以这种方式工作 (*)我们正在使用Unity3D,并将其内部数据文件存储为文本(预制、场景等),以

我的repo中有一些特殊的文件,虽然它们是文本文件,但在
.gittributes
中被标记为二进制文件,因此如果发生冲突,它们不会自动合并:我需要在文件的一个版本或另一个版本之间进行选择。(*)

但是,显示这些文件的文本差异仍然很有用,以便做出决定或查看不同提交之间的更改。 我可以使用外部diff工具来实现这一点,github实际上显示了文本diff,但我想知道是否可以配置git,使其内部diff工具以这种方式工作


(*)我们正在使用Unity3D,并将其内部数据文件存储为文本(预制、场景等),以便在repo中有效压缩。

binary
是一个禁用差分、行尾规范化和合并的宏。你似乎真的只需要后者。为此,请尝试使用
-merge
。如果还想禁用行尾规范化,请使用
-merge-text

您可以为这些文件定义一个特殊的差异过滤器

要实现这一点,您需要将以下配置添加到
.gitconfig
文件中:(名称
二进制文本
是任意的)

textconv
定义了将二进制文件转换为普通文本的工具,因为您的文件是普通文本文件,一个简单的
cat
就足够了。要启用差异化,必须为文件类型指定差异过滤器

因此,让我们假设文件在
.foo
上结束

现在将以下内容添加到
.gittribute
文件中:

*.foo diff=binary-text
现在,diff应该按预期工作


有关这方面的更多信息,请阅读Pro Git手册中的章节。

使用自定义差异不会阻止二进制文本文件的合并。-merge选项是我需要的,但是感谢这正是我需要的:阻止合并,但不阻止差异。谢谢,在.gittributes手册页中错过了该选项
*.foo diff=binary-text