我有一个名为/ static的目录。它中有很多子目录。 我需要忽略/ static /目录的所有子目录中的所有文件,除了.htaccess,null.jpg和index.php文件。 请告诉我这个操作的正确语法是什么?
/static/**
!/static/**/.htaccess
和
/static/*
!/static/*/.htaccess
不起作用。
答案 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
)正在尝试添加此功能:
但是,由于其中一个条件是“重新包含规则中的目录部分必须是文字(即没有通配符)”,因此无论如何都不能使用该功能。