gitattributes文件

参考:https://git-scm.com/docs/gitattributes

格式

Git的gitattributes文件是一个文本文件,文件中的一行定义一个路径的若干属性。以行为单位设置一个路径下所有文件的属性,格式如下:

要匹配的文件模式 属性1 属性2

gitattributes文件的一行中,一个属性(以text属性为例)可能有4种状态:设置text,不设置-text,设置值text=string,未声明(通常不出现该属性即可,但是为了覆盖其他文件中的声明,也可以用!text

GRLF和LF

CRLFLF都是用来表示文本换行的方式。CR代表回车,对应字符\rLF表示换行,对应字符\n。不同操作系统文本使用的换行符各不相同。Windows系统使用的是CRLF,Unix系统(包括Linux,MacOS近些年的版本)使用的是LF

实例

*           text=auto  
# 文件的行尾自动转换。如果是文本文件,则在文件入Git库时,行尾自动转换为LF。如果已经在入Git库中的文件的行尾是GRLF,则文件在入Git库时,不再转换为LF。

*.txt       text  
# 对于.txt文件,标记为文本文件,并进行行尾规范化。

*.jpg       -text  
# 对于`.jpg`文件,标记为非文本文件

*.vcproj    text eol=crlf 
# 对于.vcproj文件,标记为文本文件,在文件入Git库时进行规范化,行尾转换为LF。在检测到出工作目录时,行尾自动转换为GRLF。

*.sh        text eol=lf  
# 对于sh文件,标记为文本文件,在文件入Git库时进行规范化,即行尾为LF。在检出到工作目录时,行尾也不会转换为CRLF(即保持LF)。

*.py        eol=lf  
# 对于py文件,只针对工作目录中的文件,行尾为LF。

属性

text

控制行尾的规范性。如果一个文本文件是规范的,则Git库汇总该文件的行尾总是LF。对于工作目录,除了text属性之外,还可以设置eol属性或core.eol配置变量。

eol

设置行末字符。

eol=lf ,入库时将行尾规范为LF,检出时禁止将行尾转换为CRLF
eol=crlf,入库时将行尾规范为LF,检出时将行尾转换为CRLF

diff

diff属性影响Git对特殊文件生成差异的方式。它可以告诉Git是否为路径生成文本补丁还是将路径视为二进制文件。它也可以影响在hunk头部显示的@@ -k,l +n,m @@,告诉Git使用外部命令来生成差异,或者是在生成差异之前让Git将二进制文件转换为文本文件。

设置diff
如果一个路径设置diff属性,它将被视为文本文件,即使它包含一些通常从不会出现在文本文件的字节值,例如NUL

不设置diff
没有设置diff属性的路径会生成differ二进制文件(如果启用了二进制补丁,会生成二进制补丁)。

不确定
未指明diff属性的路径首先会检查其内容,如果它看起来像文本文件并且小于core.bigFileThreshold,则将其视为文本文件,否则将生成differ二进制文件。

core.bigFileThreshold:所有平台上的默认值为512MiB。大于此大小的文件将被缩减,而不会尝试增量压缩。

字符串
diff是使用指定的diff驱动程序显示的。每个驱动程序可以指定一个或多个选项。如下部分所述。驱动程序foo是由Git的配置文件中diff.foo的配置值定义的。

定义一个外部的diff驱动程序
diff驱动程序的定义是在gitconfig中完成的,并不是在gitattributes文件中,所以严格来说,这里并不适合谈论它。

将文件标记为二进制

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值