.gitignore exclude folder but include specific subfolder
git, gitignore
Solution
If you exclude `application/`, then everything under it will always be excluded (even if some later negative exclusion pattern (“unignore”) might match something under `application/`).
To do what you want, you have to “unignore” every parent directory of anything that you want to “unignore”. Usually you end up writing rules for this situation in pairs: ignore everything in a directory, but not some certain subdirectory.
# you can skip this first one if it is not already excluded by prior patterns
!application/
application/*
!application/language/
application/language/*
!application/language/gr/
Note The trailing `/*` is significant:
- The pattern `dir/` excludes a directory named `dir` and (implicitly) everything under it. With `dir/`, Git will never look at anything under `dir`, and thus will never apply any of the “un-exclude” patterns to anything under `dir`.
- The pattern `dir/*` says nothing about `dir` itself; it just excludes everything under `dir`. With `dir/*`, Git will process the direct contents of `dir`, giving other patterns a chance to “un-exclude” some bit of the content (`!dir/sub/`).
Problem
I have a folder `application/`, which I add to the `.gitignore`. Inside the `application/`-folder there is a folder `application/language/gr`. How can I include this folder? I've tried this: ``` application/ !application/language/gr/ ```
Related problems
- How do I tell Git to ignore everything except a subdirectory?
- How do negated patterns work in .gitignore?
- How do .gitignore exclusion rules actually work?
- Using .gitignore to ignore everything but specific directories
- gitignore: Ignore all files in folder hierarchy except one specific filetype
- Make .gitignore ignore everything except a few files