web-dev-qa-db-ja.com

Gitのホワイトリストとサブディレクトリ

テキストファイルのみのホワイトリストを作成しました。

*
!*.txt

これで、サブディレクトリに未追跡のテキストファイルがあります-sub/dir/file.txt、およびこれは表示されません(無視されます)。ただし、ルートディレクトリ内のテキストファイルは表示されます。

なぜですか、どうすれば修正できますか?

76
Nate

そのように試してみると、構造内のディレクトリをブラックリストに登録してしまうため、失敗します。

解決するには、ディレクトリではなく、コミットしたいファイルタイプではないすべてのものをブラックリストに登録します、ディレクトリをブラックリストに登録しません

これを行う.gitignoreファイル:

# First, ignore everything
*
# Now, whitelist anything that's a directory
!*/
# And all the file types you're interested in.
!*.one
!*.two
!*.etc

リポジトリのルートディレクトリにある.txtを使用して、*.one*.two、および*.threeファイルの存在下で、.gitignoreファイルの3レベル構造ホワイトリストでこれをテストしました。 .gitignoreファイルを構造内のすべてのディレクトリに追加する必要はありません。

答えを見つけるのに使用した情報は、とりわけ this (stackoverflow.com)からのものでした。

121
simont