就像标题所说,是否可以在gitignore文件中添加“没有点的文件”?
我想这会照顾所有那些烦人的无扩展文件。
答案 0 :(得分:88)
您可以尝试类似的组合:
*
!/**/
!*.*
gitignore
exclusion rule(a negated pattern)应该忽略所有文件,但扩展名除外。
正如below提到的Mad Physicist,规则是:
It is not possible to re-include a file if a parent directory of that file is excluded. (*
)
(*
:除非在git 2.?+中满足某些条件,请参见下文)
这就是为什么!/**/
很重要(如果我们想要白名单文件,那么递归地列出父文件夹)。
我在类似的情况下提到过相同的规则,如:
作为Jakub Narębski comments,您可能不想忽略所有无扩展名文件。
我的建议:
.gitignore
:不会忽略已经版本化的文件(即使它们没有扩展名)。所有其他人都将被忽略。对于您希望版本的任何未来无扩展名文件:
git add -f -- myFile
请注意,使用git 2.9.x / 2.10(2016年中期?),如果排除该文件的父目录if there is no wildcard in the path re-included,则可能会重新包含文件。
Nguyễn Thái Ngọc Duy (pclouds
)正在尝试添加此功能:
但是,由于重新加入的规则之一是:
重新包含规则中的目录部分必须是文字(即没有通配符)
无论如何,这不会有效。
答案 1 :(得分:36)
*
!*/
!*.*
*
告诉git忽略所有内容。
!*/
然后取消任何目录的任何内容。这很重要。
!*.*
取消所有带扩展名的文件。
如果没有!*/
规则,则不会列出名称中没有.
的目录,也不会在根文件夹之外添加所需的文件。
作为参考,请阅读.gitignore documentation中的这两部分:
可选前缀“!”否定了这种模式;任何匹配的文件 被先前模式排除的将被再次包括在内。它不是 如果该文件的父目录是,则可以重新包含文件 排除。 Git没有列出性能排除的目录 原因,所以包含文件的任何模式都没有效果,无论如何 他们被定义的地方。在第一个前面放一个反斜杠(“\”) “!”对于以文字“!”开头的模式,例如, “!重要!.TXT”。
如果图案以斜线结尾,则会将其删除 以下描述,但它只会找到一个匹配 目录。换句话说,foo /将匹配目录foo和路径 在它下面,但不匹配常规文件或符号链接 foo(这与pathspec一般工作的方式一致 GIT)。
答案 2 :(得分:0)
在我的文件夹中,有许多带有*.c, *.h, *.txt, *.csv
等扩展名的文件和没有任何扩展名的二进制文件。因此,我需要忽略所有文件execpt *.c,*.h
和.gitignore
,因此对于.gitignore
示例来说,这对我有用:
*/* #ignore all files in each directory
!*/*.c #unignore .c files in each directory
!*/*.h #unignore .h header files in each directory
!.gitignore #unignore .gitignore