How do I tell Git to ignore everything except a subdirectory?
I want to ignore all files in my repository except those that occur in the bin
subdirectory. I tried adding the following to my .gitignore
:
*
!bin/*
This does not have the desired effect, however: I created a new file inside of bin/
, but doing git status
still shows nothing to commit (working directory clean)
.
Any suggestions?
Solution 1:
This ignores root files & root directories, then un-ignores the root bin directory:
/*
/*/
!/bin/
This way you get all of the bin directory, including subdirectories and their files.
Solution 2:
Here how to ignore everything exept one directory "MY_SUPER_DUPER_TEMPLATE_directory" in some directory
Structure: /bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
/*
!/bitrix
/bitrix/*
!/bitrix/templates
/bitrix/templates/*
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
*.DS_Store
*.gitignore
Solution 3:
You must exclude everything on the way to the destinations, but you must include the destinations:
Note: This is an exclusion file (i.e. .gitignore) so the logic is inverted. Ignore all, except the tsp directory, ignore all in tsp directory, except the src directory...
/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore