Gitignore排除所有子目录中的某些文件

Gitignore排除所有子目录中的某些文件,git,gitignore,Git,Gitignore,我有一个名为/static的目录。里面有很多子目录。 我需要忽略/static/目录所有子目录中的所有文件,除了.htaccess、null.jpg和index.php文件。 请告诉我此操作的正确语法是什么 /static/** !/static/**/.htaccess 及 不要工作。正如我在“”中提到的,要记住的主要规则是: (*:除非git 2中满足某些条件,请参见下文) 这就是为什么任何忽略文件夹的规则(如*或*/)都会导致无法排除任何子文件 这就是为什么正确的方法是排除一切,除了:

我有一个名为/static的目录。里面有很多子目录。 我需要忽略/static/目录所有子目录中的所有文件,除了.htaccess、null.jpg和index.php文件。 请告诉我此操作的正确语法是什么

/static/**
!/static/**/.htaccess

不要工作。

正如我在“”中提到的,要记住的主要规则是:


*
:除非git 2中满足某些条件,请参见下文)

这就是为什么任何忽略文件夹的规则(如
*
*/
)都会导致无法排除任何子文件

这就是为什么正确的方法是排除一切,除了:

  • 文件夹
  • (然后)要排除的文件
如果你不先排除文件夹,你的文件仍然会被忽略(因为我上面提到的规则)

因此,请添加您的
.gitignore

/static/**/**
!/static/**/
!.gitignore
!.htaccess
这是用Git2.4.1测试的,甚至可以在Windows上运行


请注意,使用git 2.9.x/2.10(2016年年中?),如果文件的父目录被排除,则可能会重新包含该文件

正在尝试添加此功能:

  • 对于git v2.7.0,在git v2.8.0-rc0中恢复
  • git v2.8.0-rc0,。。。在git 2.8.0-rc4中恢复了(!)

但是,由于其中一个条件是“re-include规则中的目录部分必须是文字(即没有通配符)”,因此您不能在此处使用该功能。

我认为您应该首先将目录列为白名单。做
/静态/**/
在第一种方法中充当第二行?
/static/**/**
!/static/**/
!.gitignore
!.htaccess