Von*_*onC 97
您可以尝试类似于以下的组合:
*
!/**/
!*.*
Run Code Online (Sandbox Code Playgroud)
该gitignore
排除规则(否定模式)应忽略所有文件,但具有扩展名的文件除外.
如果排除该文件的父目录,则无法重新包含文件.(*
)
(*
:除非在git 2.?+中满足某些条件,见下文)
!/**/
如果我们想要白名单文件,这就是重要的原因(递归地列出父文件夹).
我在类似的情况下提到过相同的规则,例如:
正如JakubNarębski 评论的那样,您可能不想忽略所有无扩展名文件.
我的建议:
.gitignore
如上所示:已经版本化的文件不会被忽略(即使他们没有扩展名).所有其他人都将被忽略.对于您希望版本的任何未来无扩展文件:
git add -f -- myFile
Run Code Online (Sandbox Code Playgroud)
请注意,使用git 2.9.x/2.10(2016年中期?),如果重新包含的路径中没有通配符,则可以重新包含该文件(如果排除该文件的父目录).
NguyễnTháiNgọcDuy(pclouds
)正在尝试添加此功能:
但是,由于重新纳入的规则之一是:
重新包含规则中的目录部分必须是文字(即没有通配符)
无论如何,这不会在这里奏效.
Mad*_*ist 42
*
!*/
!*.*
Run Code Online (Sandbox Code Playgroud)
*
告诉git忽略一切.
!*/
然后取消任何目录的任何内容.这很关键.
!*.*
取消所有带扩展名的文件.
如果没有该!*/
规则,.
将不会列出名称中没有a的目录,并且不会在根文件夹之外添加任何所需的文件.
作为参考,请阅读.gitignore文档中的这两部分:
可选前缀"!" 否定了这种模式; 之前模式排除的任何匹配文件将再次包含在内.如果排除该文件的父目录,则无法重新包含文件.出于性能原因,Git不会列出排除的目录,因此无论在何处定义,所包含文件的任何模式都不起作用.在第一个"!"前放一个反斜杠("\")对于以文字"!"开头的模式,例如"!important!.txt".
如果模式以斜杠结尾,则为了以下描述的目的将其删除,但它只会找到与目录的匹配项.换句话说,foo /将匹配目录foo和它下面的路径,但是不匹配常规文件或符号链接foo(这与pathpec在Git中的工作方式一致).
在我的文件夹中,有很多带有*.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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20239 次 |
最近记录: |