我的仓库中有一些特殊文件,虽然它们是文本文件,但在.gitattributes
中标记为二进制文件,因此如果我们发生冲突,它们不会自动合并:我需要在一个文件夹中选择该文件的版本或其他。 (*)
但是,为了做出决定或查看不同提交之间的更改,显示这些文件的文本差异仍然很有用。 我可以使用外部差异工具来做到这一点,github实际上显示文本差异,但我想知道我是否可以配置git,以便它的内部差异工具以这种方式工作。
(*)我们正在使用Unity3D并将其内部数据文件存储为文本(预制件,场景等),以便在回购中有效地压缩它们。
答案 0 :(得分:2)
binary
是一个禁用差异,行结束规范化和合并的宏。你似乎真的只需要后者。为此,请尝试使用-merge
。如果您也想禁用行结束规范化,请使用-merge -text
。
答案 1 :(得分:0)
您可以为这些文件定义一个特殊的diff过滤器。
要实现此目的,您需要将以下配置添加到.gitconfig
文件中:(名称binary-text
是任意的)
[diff "binary-text"]
textconv = cat
textconv
定义了将二进制文件转换为常用文本的工具,因为您的文件是通常的文本文件,简单cat
就足够了。要启用差异,您必须为文件类型指定diff过滤器。
所以我们假设文件以.foo
结尾。
现在将以下内容添加到.gitattribute
文件中:
*.foo diff=binary-text
现在差异应该按预期工作。
有关详细信息,请参阅Pro Git书中的Customizing Git - Git Attributes章节。