Gitで空フォルダを管理したいときemptyを使うか.gitignoreを使うか

で、2つの流派に分かれるempty派と.gitignore派ですが、うまく使い分けるといい感じになります。

.gitignore はキャッシュやログなど、システムがその中にファイルを作るフォルダに、 empty はもしかしたらその中にソースコードを入れるかもしれないけど今のところ空っぽな場合、 と、それぞれ使い分けると好都合。

*
!.gitignore

と書いた .gitignore を作ると、その中に入っているファイルは全部無視されて、ソースコードを入れて git commit -a してもユーザへのフィードバックなしにスルーされてしまいます。また、作業者に対して、パッと見でそこが無視フォルダだからファイルを置くとき注意しないといけないと気づかれない可能性もあります。その代わり単体で意味を成すので、より上位の.gitignoreと関係しなくて済むのでシンプルです。

empty が置かれているフォルダでファイルが作られてしまうのを無視するには、より上位の.gitignoreで別途指定しないといけません。その方法を多用していると、(GUIを使っている場合はとくに)うっかりemptyファイル自体が無視されているのに気付かないことがありますし、それを登録するには、git add -f folder/empty というコマンドを打たないといけなくて作業のスムーズさがなくなります。

emptyを置いたままだというのを忘れていても、ファイルが commit -a に含まれるほうが良いですね。まあ、中身のない .gitignore を置いても同じなんですが、隠しファイルでないほうが消し忘れに気付きやすいのであえて empty にしておくのがいいと思います。そうすると、.gitignore はそれ以外全部無視で、empty は作りかけだから空っぽという意図の表現にもなりますね。

もともとここ http://tipshare.info/view/4f1917394b2122f523000000 に書いてたんですが、やたら長文になってしまったので、別途読みやすいフォーマットのとこに転記しました。