I want to ignore all files in my repository except those that occur in the
nothing to commit (working directory clean)
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.