.gitignore .gitattributes 声明的所有二进制文件

问题描述

如果 .gitignore 让你定义一个基本上说 ignore all files considered as binary files 的模式会怎样?我的意思是不添加每个模式,因为行太多,而是类似于 binary,类似于 .gitattributes 让您定义的内容

基本上我想要:

  • 认忽略所有文件,这些文件被认为是 binary 由 git 自动检测并由 .gitattributes 指定
  • 只允许特定的二进制文件,像往常一样通过 .gitignore 显式允许它们

我还没有发现任何迹象表明这种情况是可能的。有人知道更多吗?

解决方法

这是不可能的。

gitignore documentation

中所述

gitignore 文件中的每一行指定一个模式。在决定是否忽略某个路径时,Git 通常会检查来自多个来源的 gitignore 模式,按照以下优先级顺序,从高到低(在一个优先级内,最后匹配的模式决定结果)

因此不可能按种类

忽略文件

对此的解决方法可能是定义一个预提交脚本,该脚本检查提交中是否存在二进制文件并以非零代码退出,以便在二进制文件存在时您将无法提交提交。

您可以使用此命令检查提交中存在的每个文件,并查看它是否是二进制文件

file --mime <commit-file> | grep binary