258

ディレクトリ内の特定のタイプのファイルをすべて無視する方法はありますか?

**明らかに git にとって無意味なので、これは機能しません:

/public/static/**/*.js

アイデアは、任意のネストされたフォルダーに一致することです。

4

7 に答える 7

261

ドキュメントによると、現在のバージョンで構文**がサポートされているようです。git1.8.2.1

**完全なパス名に対して一致するパターンの2 つの連続するアスタリスク (" ") には、特別な意味がある場合があります。

  • 先頭の " **" とそれに続くスラッシュは、すべてのディレクトリで一致することを意味します。たとえば、" "は、パターン " " と同じように、任意の場所の**/fooファイルまたはディレクトリ " " に一致します。" " は、ディレクトリ " "の直下にあるファイルまたはディレクトリ " " と一致します。foofoo**/foo/barbarfoo

  • 末尾の " /**" は、内部のすべてに一致します。たとえば、" abc/**" はディレクトリ " " 内のすべてのファイルに一致します。ファイルabcの場所を基準にして、.gitignore深さは無限です。

  • スラッシュの後に 2 つの連続するアスタリスクが続くと、スラッシュは 0 個以上のディレクトリに一致します。たとえば、" "は " "、" "、" " などにa/**/b一致します。a/ba/x/ba/x/y/b

  • その他の連続するアスタリスクは無効と見なされます。

于 2014-01-15T20:23:48.827 に答える
153

試したことはありませんが、 withを にgit help ignore入れると、必要なことが実行されることを示唆しています。.gitignore*.js/public/static

注: 以下の Joeys の回答も必ず確認してください: 特定のサブディレクトリ内のファイルを無視する場合は、ローカルの .gitignore が正しい解決策です (局所性は良好です)。ただし、レポ全体に同じパターンを適用する必要がある場合は、 ** ソリューションの方が適しています。

于 2012-05-23T02:27:46.497 に答える
81

更新: @Joeyの回答**を見てください: Gitはパターンの構文をサポートするようになりました。どちらのアプローチもうまくいくはずです。


gitignore(5) の man ページには次のように記載されています。

パスと同じディレクトリまたは任意の親ディレクトリにある .gitignore ファイルから読み取られたパターン。上位レベルのファイル (ワーク ツリーのトップレベルまで) のパターンは、下位レベルのファイルのパターンによって上書きされます。ファイルを含みます。

.gitignoreこれが意味することは、レポの任意のディレクトリにあるファイルのパターンが、そのディレクトリすべてのサブディレクトリに影響するということです。

ご提供いただいたパターン

/public/static/**/*.js

まず、(正しく指摘したように)**構文がGitで使用されていないためです。また、/パス名の先頭にパターン化された先頭のアンカー。(したがって、/public/static/*.jsは一致します/public/static/foo.jsが、 は一致しません /public/static/foo/bar.js。)先頭を削除しても機能せず、との/ようなパスが一致します。public/static/foo.jsfoo/public/static/bar.js編集: 先頭のスラッシュを削除するだけでは機能しません — パターンにはまだスラッシュが含まれているため、Git によって単純な非再帰シェル グロブとして扱われます (これを指摘してくれた@Joey Hoerに感謝します)。

<repo>/public/static/.gitignore@ptyx が示唆したように、ファイルを作成し、次のパターンのみを含める必要があります。

*.js

先頭/に がないため、パスのどの部分でも一致し、そのパターンは/public/staticディレクトリとそのサブディレクトリ内のファイルにのみ適用されます。

于 2012-05-23T05:59:44.250 に答える
10

追跡されていないファイルを無視するには、.git/info/exclude に移動します。Exclude は、無視される拡張子またはファイルのリストを含むファイルです。

于 2013-05-30T00:38:31.407 に答える
1

他の回答に加えていくつかの追加のヒント (運が良く、問題が他の理由によるものである場合に役立つ可能性があります):

  1. コード内で 100 MB を超えるファイルを無視するようにしてください
  2. git ワークフローを再起動するだけです。ローカルの .git フォルダーを削除し、再度 git init して、github へのプッシュを再試行します。
于 2021-08-19T09:23:50.857 に答える