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

时间:2015-05-27 03:28:16

标签: git gitignore

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

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

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

不起作用。

1 个答案:

答案 0 :(得分:6)

正如我在“Including specific file extension in gitignore”中所提到的,要记住的主要规则是:

  

It is not possible to re-include a file if a parent directory of that file is excluded. (*)
  (*:除非在git 2.?+中满足某些条件,请参见下文)

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

这就是为什么正确的方法是排除除了以外的所有内容:

  • 文件夹,
  • 然后)您要排除的文件。

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

请添加.gitignore

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

这是使用Git 2.4.1测试的,甚至可以在Windows上运行。

请注意,使用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)正在尝试添加此功能:

但是,由于其中一个条件是“重新包含规则中的目录部分必须是文字(即没有通配符)”,因此无论如何都不能使用该功能。