如果.gitignore
让我们定义一个基本上是ignore all files considered as binary files
的模式会怎样?我的意思是不添加每个模式,因为行太多了,而是像binary
一样,类似于.gitattributes
。
基本上我想要:
- 默认情况下忽略所有文件,这些文件被视为
binary
,由git自动检测,由.gitattributes
指定 - 只允许特定的二进制文件,方法是像往常一样使用
.gitignore
显式地允许它们
我还没有发现任何迹象表明这样的事情是可能的。有人知道更多吗?
这是不可能的。
如gitignore文档中所述
gitignore文件中的每一行都指定一个模式。在决定是否忽略路径时,Git通常会检查来自多个来源的gitignore模式,优先级顺序如下,从高到低(在一个优先级级别内,最后匹配的模式决定结果(
因此,不可能按文件的类型忽略文件
解决方法可以是定义一个预提交脚本,该脚本检查提交中是否有二进制文件,并使用非零代码退出,这样当提交中存在二进制文件时,您就无法提交。
您可以使用以下命令检查提交中的每个文件,看看它是否是二进制文件
file --mime <commit-file> | grep binary