git ignore all files of a certain type, except those in a specific subfolder
GitGitignoreGit Problem Overview
I have a directory structure like this:
- root
- folder1
- abc.json
- def.json
- somedir
- more.json
- folder2
- qwe.json
- rty.json
- spec
- mock1.json
- mock2.json
- somedir
- more_mocks.json
- folder1
Now using a .gitignore
I want to ignore all *.json
files except for the ones in the spec
. I don't want to use a .gitignore
in folder1
and folder2
because there are a ton of these and they will get added to a lot, and I'm sure I will forget to move the right .gitignore
file in place.
In addition, there may be more nested directories with JSON files, and this rule needs to apply to all subdirectories as well.
So how do I ignore all files of a type, except for a certain subdirectory?
Git Solutions
Solution 1 - Git
> An optional prefix !
which negates the
> pattern; any matching file excluded by
> a previous pattern will become
> included again. If a negated pattern
> matches, this will override lower
> precedence patterns sources.
https://git-scm.com/docs/gitignore
*.json
!spec/*.json