就像标题所说的那样,是否可以将“没有点的文件”添加到 gitignore 文件中?
我想这会处理所有那些麻烦的无扩展名文件。
您可以尝试类似以下的组合:
*
!/**/
!*.*
该gitignore
排除规则(否定模式)应忽略所有文件,但具有扩展名的文件除外。
如果排除了该文件的父目录,则无法重新包含该文件。(*
)
(*
: 除非在 git 2.?+ 中满足某些条件,见下文)
这就是为什么!/**/
如果我们想将文件列入白名单很重要(递归地将父文件夹列入白名单)。
我在类似情况下提到了相同的规则,例如:
正如Jakub Narębski 评论的那样,您可能不想忽略所有无扩展名文件。
我的建议:
.gitignore
如上所示:已经版本化的文件不会被忽略(即使它们没有扩展名)。所有其他将被忽略。对于您想要版本的任何未来无扩展名文件:
git add -f -- myFile
请注意,使用 git 2.9.x/2.10(2016 年中?),如果路径中没有通配符 re-included ,则如果排除了该文件的父目录,则可能会重新包含该文件。
Nguyễn Thái Ngọc Duy ( pclouds
)正在尝试添加此功能:
但是,由于重新包含的规则之一是:
重新包含规则中的目录部分必须是文字(即没有通配符)
无论如何,这在这里是行不通的。
*
!*/
!*.*
*
告诉 git 忽略所有内容。
!*/
然后忽略任何目录。这是至关重要的。
!*.*
取消忽略所有带有扩展名的文件。
如果没有该!*/
规则,.
将不会列出名称中没有 a 的目录,并且不会将所需的文件添加到根文件夹之外。
作为参考,请阅读.gitignore 文档中的这两部分:
可选前缀“!” 这否定了模式;任何被先前模式排除的匹配文件都将再次包含在内。如果排除了该文件的父目录,则无法重新包含该文件。出于性能原因,Git 不会列出排除的目录,因此包含文件的任何模式都无效,无论它们是在哪里定义的。在第一个“!”前面放一个反斜杠(“\”)对于以文字“!”开头的模式,例如,“!important!.txt”。
如果模式以斜线结尾,则出于以下描述的目的将其删除,但它只会找到与目录的匹配项。换句话说, foo/ 将匹配目录 foo 和它下面的路径,但不会匹配常规文件或符号链接 foo(这与 pathspec 在 Git 中的一般工作方式一致)。
在我的文件夹中有很多带有*.c, *.h, *.txt, *.csv
etc. 扩展名的文件和没有任何扩展名的二进制文件。所以我需要忽略所有文件 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