次のようなディレクトリ構造があります:
.git/
.gitignore
main/
...
tools/
...
...
main と tools 内、および他のどのディレクトリでも、どのレベルでも、無視したい 'bin' ディレクトリが存在する可能性があります (また、その下にあるすべてのものも無視したいです)。.gitignore でこれらの各パターンを試しましたが、どれも機能しません。
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
誰か助けてくれませんか? 最初のパターン (動作するはずだと思うもの) は、次のようにすれば問題なく動作します:
/main/**/bin/**/*
しかし、すべてのトップレベルディレクトリにエントリを用意したり、新しいディレクトリを追加するたびに .gitignore を変更したりするのは望ましくありません。また、名前にサブ文字列 'bin' が含まれるファイルやディレクトリもあり、それらを保持したいと考えています。
これは最新の msysgit を使用した Windows 上です。
ベストアンサー1
バージョン1.8.2より前では、**
は において特別な意味を持っていませんでした.gitignore
。1.8.2以降では、gitは をサポートし**
、0個以上のサブディレクトリを意味します(リリースノート)。
ディレクトリ ツリー内の現在のレベルより下のどこかにあるすべてのディレクトリを無視するには、次のパターンを持つファイルを使用します。bin
.gitignore
bin/
このページには、類似のパターンを使用してman
呼び出されたディレクトリを無視する例があります。foo
bin
git インデックスに追跡する必要のないフォルダーがすでにある場合は、明示的に削除する必要があります。Git は、新しいパターンに一致したからといって、すでに追跡されているパスの追跡を停止することはありません。インデックスのみ ( --cached ) からフォルダーの削除 ( rm ) を再帰的に ( -r.gitignore
)実行します。ルート bin フォルダーのコマンド ラインの例:
git rm -r --cached bin