ディレクトリ内のタイプのすべてのファイルを無視する方法はありますか?
**
は明らかにgitにとって無意味なので、これは機能しません:
/public/static/**/*.js
アイデアは、任意のネストされたフォルダーを一致させることです。
試したことはありませんが、git help ignore
は、.gitignore
とともに*.js
を/public/static
に入れると、あなたが望むことをすることを提案します。
注:以下のJoeysの回答も確認してください。特定のサブディレクトリ内のファイルを無視する場合は、ローカルの.gitignoreが適切なソリューションです(ローカル性は良好です)。ただし、レポジトリ全体に同じパターンを適用する必要がある場合は、**ソリューションの方が適しています。
**
構文は、 ドキュメント に従って、バージョン1.8.2.1
の時点でgit
でサポートされているように見えます。
完全パス名と一致するパターン内の2つの連続するアスタリスク( "
**
")には、特別な意味があります。
先頭に「
**
」とそれに続くスラッシュは、すべてのディレクトリで一致することを意味します。たとえば、「**/foo
」は、パターン「foo
」と同じように、ファイルまたはディレクトリ「foo
」とどこでも一致します。 「**/foo/bar
」は、「bar
」ディレクトリの直下のファイルまたはディレクトリ「foo
」と一致します。末尾の「
/**
」は内部のすべてに一致します。たとえば、「abc/**
」は、ディレクトリ「abc
」内のすべてのファイルと、.gitignore
ファイルの場所を基準にして、深さが無限に一致します。スラッシュの後に2つの連続するアスタリスクが続き、スラッシュはゼロ個以上のディレクトリに一致します。たとえば、「
a/**/b
」は「a/b
」、「a/x/b
」、「a/x/y/b
」などに一致します。他の連続するアスタリスクは無効と見なされます。
更新: @ Joey's answer を見てください:Gitはパターンで**
構文をサポートするようになりました。どちらのアプローチもうまくいくはずです。
パスと同じディレクトリまたは任意の親ディレクトリにある.gitignoreファイルから読み取られたパターン。上位レベルのファイル(作業ツリーの最上位まで)のパターンは、下位レベルのファイルのパターンによって上書きされます。ファイルを含む。
これが意味するのは、リポジトリの任意のディレクトリにある.gitignore
ファイルのパターンがそのディレクトリおよびすべてのサブディレクトリに影響することです。
あなたが提供したパターン
/public/static/**/*.js
正しくないのは、まず(正しく指摘したように)**
構文がGitで使用されていないためです。また、先頭の/
は、そのパターンをパス名の先頭に固定します。 (つまり、/public/static/*.js
は/public/static/foo.js
に一致しますが、not/public/static/foo/bar.js
です。) 先頭の 編集:先頭のスラッシュを削除するだけでは機能しません-パターンにはまだスラッシュが含まれているため、Gitではプレーンで非再帰的なシェルグロブとして扱われます(これを指すために @ Joey Hoer に感謝します)でる)。/
を削除しても機能しません。public/static/foo.js
やfoo/public/static/bar.js
などのパスに一致します。
@ptyxが示唆したように、あなたがする必要があるのは、ファイル<repo>/public/static/.gitignore
を作成し、このパターンだけを含めることです:
*.js
先頭に/
がないため、パスのどの部分でも一致し、そのパターンは/public/static
ディレクトリとそのサブディレクトリ内のファイルにのみ適用されます。
追跡されていないファイルを無視するには、.git/info/excludeに移動します。除外は、無視された拡張子またはファイルのリストを持つファイルです。
最も簡単な解決策はfind
を使用することだと思います。複数の.gitignore
がサブディレクトリにぶらぶらしているのは好きではなく、ユニークなトップレベルの.gitignore
を管理することを好みます。そのためには、見つかったファイルを.gitignore
に追加するだけです。 /public/static/
があなたのプロジェクト/ gitホームであると仮定すると、私は次のようなものを使用します:
find . -type f -name *.js | cut -c 3- >> .gitignore
Gitがどのファイルを避けるべきかを理解するために、最初に./
を切り取ることがしばしば必要であることがわかりました。したがって、cut -c 3-
。