什么!*/表示.gitignore

bit*_*gic 14 git gitignore

使用git版本1.7.1,我试图排除除.php文件之外的所有文件.

我找到的工作解决方案依赖于命令 !*/

# Ignore Everything
*

# Except these files
!.gitignore
!*/
!*.php
Run Code Online (Sandbox Code Playgroud)

如果没有!*/,它将只包含*.php根目录中的文件.!*/这样做是什么让它起作用?

Bij*_*jan 15

看看gitignore文档

可选前缀"!" 否定了这种模式; 之前模式排除的任何匹配文件将再次包含在内.如果排除该文件的父目录,则无法重新包含文件.出于性能原因,Git不会列出排除的目录,因此无论在何处定义,所包含文件的任何模式都不起作用.在第一个"!"前放一个反斜杠("\")对于以文字"!"开头的模式,例如"!important!.txt".


sja*_*agr 9

这是我的思路:

ignore语句*默认会忽略所有内容,包括根目录及其所有内容.

因此,此时,将忽略根目录中的所有文件和文件夹.

!*.php命令将重新包含*.php根路径中的所有文件,但文件夹仍然被忽略(因为它们没有结束.php) - 因此,它们还没有被gitignore否定.

因此,该!*/命令重新包含所有目录(以及后续子目录),以便可以检查它们的*.php文件.示例:folder1/匹配否定语句,!*/因为它包含/末尾,文件夹名称适合通配符运算符*