.gitattributes默认文件类型处理

lur*_*her 5 git line-endings gitattributes

我们已经为项目存储库创建了文本和二进制文件类型的列表,但是我担心某些类型可能已从该分类中滑落,或者将来有人可能会添加新文件类型而忘记了将其添加到该.gitattribute文件。

在某些类别下不在此文件上的文件类型的默认行为是什么?未提及的文件类型的默认行为是设置为“二进制”吗?我认为将文本文件未真正像文本那样用于autocrlf转换之类的问题的问题要比rar仅将其文件类型未在配置文件中提及而将行尾更改为文件的问题要少

eis*_*eis 4

默认是尝试确定文件是文本还是二进制 - 如果将其视为二进制,则不执行任何操作,如果是文本,则将其视为已定义 core.eol 和/或 autocrlf 设置。对于大多数用例,二进制检测都是有效的。有些地方没有,而 .gitattributes 可以提供帮助。

另请参阅我之前提出的部分相关的问题。

编辑:关于默认大多数为二进制,请参阅此问题。基本上可以通过 .gitattributes 中的类似内容来完成:

* binary
*.txt crlf
Run Code Online (Sandbox Code Playgroud)

所以明星应该是第一条规则。

编辑:更改了顺序 - 在某些时候,这已被记录为这些从一般到更具体,后者压倒了前者。

  • [手册](https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html) 说 *“当多个模式与路径匹配时,后面的行将覆盖前面的行。这覆盖是按属性完成的。模式匹配路径的规则与 .gitignore 文件中的相同;请参阅 gitignore(5)"*。因此,看来星号应该放在第一位,然后用“*.txt text diff merge”覆盖,以重新记录“binary”未设置的所有属性,“binary”是“-text -diff -merge”的别名。 (5认同)