You want to use /* instead of * or */ in most cases The above code would ignore all files except for . gitignore , README.md , folder/a/file. txt , folder/a/b1/ and folder/a/b2/ and everything contained in those last two folders.
gitignore file is a plain text file where each line contains a pattern for files/directories to ignore. Generally, this is placed in the root folder of the repository, and that's what I recommend. However, you can put it in any folder in the repository and you can also have multiple . gitignore files.
A trailing " /** " matches everything inside. For example, " abc/** " matches all files inside directory " abc ", relative to the location of the . gitignore file, with infinite depth. A slash followed by two consecutive asterisks then a slash matches zero or more directories.
Use !
to negate the pattern:
*.dll
!myfile.dll
If you want to ignore whole folder, except some specific files, then write:
MyFolder/*
!MyFolder/CoolFile.txt
This won't work:
MyFolder/
!MyFolder/CoolFile.txt
You can also ignore folders like
!src/main/resources/archetype-resources/**/*
you can also ignore nested folder with patterns like
!**/src/test/resources/**/*
For quick creation of .gitignore file try gitignore.io
You can have several .gitignore
files working together in a hierarchical manner to achieve your goal.
At the root level you may have:
root
*.dll
inside the folder having the myfile.dll
you can add another .gitignore
file like so:
root/lib/folderwithMyFiledll
!myfile.dll
more info here
An optional prefix "!" which negates the pattern; any matching file excluded by a previous pattern will become included again. Put a backslash ("\") in front of the first "!" for patterns that begin with a literal "!", for example, "!important!.txt". It is possible to re-include a file if a parent directory of that file is excluded if certain conditions are met. See section NOTES for detail.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With