我有一個名爲/ 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/** /」作爲第二行嗎? –