普段.gitignoreでは拡張子などをブラックリストで追加して行きますが,拡張子のないファイルなどもありそれらをいちいち追加して行くのは面倒です.一方でプロジェクト内で管理したいファイルの拡張子はたかだか数種類の場合が多い.そこでホワイトリスト方式です.
## .gitignore ##
# ignore all
*
*/
# allow any
!*.py
!*.bash
ポイントは"/".""だけではすべてのディレクトリが無視されてしまい,いかなるファイルも追加できなくなってしまう.なので"ディレクトリは無視しない"という条件をつける必要があるわけです.
あとは個別に".pyを無視しない"などをつけていけばOK