我有一个名为/ static的目录。其中有很多子目录。 我需要忽略除.htaccess,null.jpg和index.php文件之外的/ static /目录的所有子目录中的所有文件。 请告诉我,此操作的正确语法是什么?Gitignore排除了所有子目录中的某些文件
/static/**
!/static/**/.htaccess
和
/static/*
!/static/*/.htaccess
不起作用。
我有一个名为/ static的目录。其中有很多子目录。 我需要忽略除.htaccess,null.jpg和index.php文件之外的/ static /目录的所有子目录中的所有文件。 请告诉我,此操作的正确语法是什么?Gitignore排除了所有子目录中的某些文件
/static/**
!/static/**/.htaccess
和
/static/*
!/static/*/.htaccess
不起作用。
正如我在 “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
)正在努力增加这个功能:
但是,由于其中一个条件是“重新包含规则中的目录部分必须是文字(即无通配符)”,因此无论如何您都不能使用该功能。
我认为你应该首先将目录列入白名单。在你的第一种方法中,“!/ static/** /”作为第二行吗? –