以下を参考に。
http://d.hatena.ne.jp/maeharin/20130206/gitignore
しっかり把握していなかったのでメモ。
/
で始まっていないものは.gitignoreファイルが置いてある階層以下の全てのファイルに適用されてしまう。
なのでJavaでAntやMavenのプロジェクトを想定して以下のように書いてある場合、
dist/
target/
ソース内(src/main/java
等)にtargetパッケージがあった場合に無視されてしまう。(targetはJavaの予約語ではないため普通に作成出来る。)
なので、基本的に/
始まりで書いて、同階層のみに適用されるようにする使い方が良いと思う。勿論、サムネイルファイルなどほぼ使わないと保証が取れているようなファイルは同階層以下全てで適用して良いが。
/dist/
/target/
マルチモジュールプロジェクトの場合は、Mavenを例に取ると、ルートpomがある場所で全ての定義をするのではなく、上記のような方針で厳密に指定された.gitignoreファイルを、ルートpomがある場所とそのサブプロジェクトのpomがある場所にそれぞれ配置するのが良い。
.
├── .gitignore
├── module1
│ ├── .gitignore
│ └── pom.xml
├── module2
│ ├── .gitignore
│ └── pom.xml
└── pom.xml
余談
gitignore.io を結構好きで使っていたのだが、かなりカジュアルに全階層適用の.gitignoreを吐いてくる。よく使っている人は上記のような問題があることに留意して使う必要がある。
https://www.gitignore.io/