这是Git的一个文本文件,文件中的一行定义一个路径的若干个属性。
格式为:
要配置的文件 属性1 属性n ...
是以行为单位的进行设置文件属性的
一、属性:
1、text
控制行尾的规范性
如果一个文本文件是规范的,则Git库汇总该文件的行尾总是LF。
对于工作目录,除了text属性之外,还可以设置eol属性,或core.eol配置变量。
2、eol
设置行末字符
eol=lf,入库时将行尾规范为LF,检出时禁止将行尾转换为CRLF
eol=crlf,入库时将行尾规范为CRLF,检出时将行尾转换为CRLF
3、ident
为路径设置ident属性,路径中的blob对象中的$id$将会被替换为$id:char_40_hexadecimal_name
4、diff
对特殊文件生成差异的方式
可以告诉Git是否为路径生成文本补丁还是将路径视为二进制文件;也可以影响在hunk头部显示的@@ -k,l +n,m @@,告诉Git使用外部命令来生成差异,或者是在生成差异之前让Git将二进制文件转换为文本文件。
设置diff
对于一个路径,如果设置了diff属性,它将被视为文本文件即使它包含一些通常从不会出现文本文件的字节值,例如NULL。
不设置diff
没有设置diff属性的路径会生成differ二进制文件(如果启用了二进制补丁,会生成二进制补丁)。
不确定
未指明diff属性的路径首先会检查其内容,如果它看起来像文本文件并且小于core.bigFileThreshold,则将其视为文本文件,否则将生成differ二进制文件。
core.bigFileThreshold: 所有平台上的默认值为512MB。大于此大小的文件将被缩减,而不会尝试增量压缩。
字符串
diff是使用指定的diff驱动程序显示的。每个驱动程序可以指定一个或多个选项。如下部分所述,驱动程序foo是由Git的配置文件中diff.foo的配置值定义的。
定义一个外部的diff驱动程序
diff驱动程序的定义是在gitconfig中完成的,并不是在gitattributes文件中,所以严格来说,这里并不适合谈论它。
将文件标记为二进制
eg.
*.sh text eol=lf
二、使用
1、在一个Git库中可以有多个gitattributes文件
按照匹配的距离最近的gitattributes文件进行选择
在同一个gitattributes文件中,按照行的先后顺序,后序优先(!属性 可进行该属性的覆盖)
2、统一设置
git config --get core.attributesFile
git config --global --get core.attributesFile