web-dev-qa-db-ja.com

マッチが再帰的でないように.gitignoreに何かを追加するにはどうすればよいですか?

.gitignoreに何かを追加して、一致が再帰的でないようにする方法を教えてください。

たとえば、現在のディレクトリにあるディレクトリfooとファイルbar.txtは無視しますが、サブディレクトリには存在しません。

私は.gitignoreファイルに対してこれを試しました:

foo/
bar.txt

しかし、残念ながらgitはこれを再帰的に適用するため、otherdir/bar.txtotherdir/foo/も無視されてしまいます。これは私が望んでいることではありません。

(gitにすべての無視されたファイルを表示し、無視されているファイルの原因である.gitignoreファイルを参照するコマンドがありますか?これはデバッグに役立ちます。)

60
pauldoo

解決策は、.gitignoreエントリにスラッシュを付けることです。

/foo/
/bar.txt

(私はStackOverflowに投稿する前にこれを試したと思いましたが、これは完全に機能するため、適切に試していないことは明らかです。)

98
pauldoo

Gitignoreマンページから:

オプションの接頭辞!これはパターンを無効にします。以前のパターンによって除外された一致するファイルは、再び含まれます。否定されたパターンが一致する場合、これは優先順位の低いパターンソースをオーバーライドします。

そう !* .gitignoreの最初の行として、以前のすべてのパターンをクリアします。

11
hermannloose