I have a close setup. It just needs a little trick to add subdirectories :
/*
!/.emacs
!/.emacs.d/
/.emacs.d/*
!/.emacs.d/themes/
!/.emacs.d/functions/
You can check my .gitignore here [0].