Gitignore exclude certain files in all subdirectories
I have a directory called /static. There is a lot of subdirectories in it.
I need to ignore all files in all subdirectories of the /static/ directory except of .htaccess, null.jpg and index.php files.
Tell me please what is the right syntax for this operation?
One Solution collect form web for “Gitignore exclude certain files in all subdirectories”
As I mentioned in “Including specific file extension in gitignore”, the main rule to remember is:
It is not possible to re-include a file if a parent directory of that file is excluded. (
*: unless certain conditions are met in git 2.?+, see below)
That is why any rule which ignores folders (like
*/) would make excluding any sub-files impossible.
That is why the right approach is to exclude everything except:
- (then) the files you want to exclude.
If you don’t exclude folders first, your files would still be ignored (because of the rule I mention above)
So add in your
/static/**/** !/static/**/ !.gitignore !.htaccess
This is tested with Git 2.4.1 and works even on Windows.
Note that with git 2.9.x/2.10 (mid 2016?), it might be possible to re-include a file if a parent directory of that file is excluded if there is no wildcard in the path re-included.
Nguyễn Thái Ngọc Duy (
pclouds) is trying to add this feature:
- commit 506d8f1 for git v2.7.0, reverted in commit 76b620d git v2.8.0-rc0
- commit 5e57f9c git v2.8.0-rc0,… reverted(!) in commit 5cee3493 git 2.8.0-rc4.
However, since one of the conditions was “The directory part in the re-include rules must be literal (i.e. no wildcards)”, you cannot use that feature here anyway.