git check-ignore
git check-ignore -v . 检查当前文件夹被哪一个配置忽略了
git check-ignore -v fileName 检查指定的文件被哪一个配置忽略了
.gitignore exclude folder but include specific subfolder
问题
I have the folder application/
which I add to the .gitignore
. Inside the application/
folder is the folder application/language/gr
. How can I include this folder?
I've tried this
application/
!application/language/gr/
with no luck...
回答
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 nameddir
and (implicitly) everything under it.
Withdir/
, Git will never look at anything underdir
, and thus will never apply any of the “un-exclude” patterns to anything underdir
. - The pattern
dir/*
says nothing aboutdir
itself; it just excludes everything underdir
. Withdir/*
, Git will process the direct contents ofdir
, giving other patterns a chance to “un-exclude” some bit of the content (!dir/sub/
).