回答:
試したことはありませんが、 git help ignore
んが、.gitignore
withを*.js
in /public/static
に入れると、必要なことを実行できることを示唆しています。
注:以下のJoeysの回答も確認してください。特定のサブディレクトリ内のファイルを無視する場合は、ローカルの.gitignoreが適切なソリューションです(ローカリティは良好です)。ただし、同じパターンをリポジトリ全体に適用する必要がある場合は、**ソリューションの方が適しています。
ドキュメントによると、**
構文はgit
バージョン1.8.2.1
によってサポートされているようです。
**
フルパス名と照合されるパターン内の2つの連続するアスタリスク( " ")は、特別な意味を持つ場合があります。
先頭に "
**
"とそれに続くスラッシュは、すべてのディレクトリで一致することを意味します。たとえば、「**/foo
」foo
はパターン「foo
」と同じ場所のファイルまたはディレクトリ「」に一致します。「**/foo/bar
」bar
は、ディレクトリ「foo
」の直下にあるファイルまたはディレクトリ「」に一致します。末尾の「
/**
」は、内部のすべてに一致します。たとえば、「abc/**
」abc
は、.gitignore
ファイルの場所を基準にして、ディレクトリ「」内のすべてのファイルに一致します。深さは無限です。スラッシュとそれに続く2つのアスタリスク、それに続くスラッシュは、0個以上のディレクトリと一致します。たとえば、「
a/**/b
」は「a/b
」、「a/x/b
」、「a/x/y/b
」などに一致します。その他の連続するアスタリスクは無効と見なされます。
xxx/**
とはxxx/
?
xxx/**
ターゲットのすべてのファイルとディレクトリの内部xxx
に対し、xxx/
ターゲットxxx
ディレクトリを直接。これは!
、「ファイルの親ディレクトリが除外されている場合、ファイルを再インクルードすることは不可能です。」などのパターンを無効にする場合にのみ問題になるため、xxx/*
またはxxx/**
を使用する必要があります。
**.js
?
更新:@Joeyの答えを見てください:Git **
がパターンの構文をサポートするようになりました。どちらのアプローチも正常に機能するはずです。
パスと同じディレクトリ、または任意の親ディレクトリにある.gitignoreファイルから読み取られたパターン。上位レベルのファイル(作業ツリーの最上位レベルまで)のパターンは、下位のディレクトリのファイルにあるパターンで上書きされます。ファイルを含みます。
これは.gitignore
、リポジトリの特定のディレクトリにあるファイルのパターンが、そのディレクトリとすべてのサブディレクトリに影響することを意味します。
あなたが提供したパターン
/public/static/**/*.js
(正しく指摘したように)**
構文がGitで使用されていないため、これは正しくありません。また、先頭/
はそのパターンをパス名の先頭に固定します。(したがって、/public/static/*.js
一致します/public/static/foo.js
が一致しません /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
ディレクトリとそのサブディレクトリ内のファイルにのみ適用されます。
/
ような経路に一致する、のいずれかで動作しませんpublic/static/foo.js
とfoo/public/static/bar.js
。」は偽です。ドキュメントに引用するには「パターンにスラッシュ/が含まれていない場合、Gitはそれをシェルグロブパターンとして扱い、.gitignoreファイルの場所を基準としたパス名との一致をチェックします( .gitignoreファイルからではありません)。」foo/public/static/bar.js
パターンにはが含まれているため、一致しません/
。
追跡されていないファイルを無視するには、.git / info / excludeに移動します。除外は、無視された拡張子またはファイルのリストを含むファイルです。
最も簡単な解決策はを使用することだと思いますfind
。.gitignore
サブディレクトリに何回もぶらぶらするのは好きではありません.gitignore
。独自のトップレベルを管理することを好みます。これを行うには、見つかったファイルをに追加するだけです.gitignore
。それ/public/static/
があなたのプロジェクト/ gitホームであるとすると、私は次のようなものを使用します:
find . -type f -name *.js | cut -c 3- >> .gitignore
./
gitが回避すべきファイルを理解するには、最初にを切り取ることがしばしば必要であることがわかりました。したがって、cut -c 3-
。