私は次のディレクトリ構造とファイルを持っています。
pw-spec/
|-- event_spec.coffee
|-- event_spec.js
|-- integration
| `-- service
| |-- auth_spec.coffee
| |-- auth_spec.js
| |-- chat_spec.coffee
| |-- chat_spec.js
| |-- transport_spec.coffee
| `-- transport_spec.js
|-- message_spec.coffee
|-- message_spec.js
|-- pw_spec.coffee
|-- pw_spec.js
|-- run.coffee
|-- run.html
|-- run.js
|-- service
| |-- auth_spec.coffee
| |-- auth_spec.js
| |-- chat_spec.coffee
| |-- chat_spec.js
| |-- stream_spec.coffee
| `-- stream_spec.js
|-- spec.coffee
|-- spec.js
`-- stub
|-- stream.coffee
|-- stream.js
|-- transport.coffee
`-- transport.js
4 directories, 27 files
*.js
ディレクトリ内のすべてのpw-spec
ファイルを無視したいと思います。
ただし、次のパターンを.gitignore
に追加しても、カットされません。
pw-spec/*.js
pw-spec/**/*.js
問題は、2番目のものはツリー内のちょうど1レベルの深さのjsファイルにのみ一致するのに対し、pw-spec
の下のすべてのjsファイルに一致させたいということです。
やってる
ls pw-spec/**/*.js
[1]を生成します:
pw-spec/service/auth_spec.js
pw-spec/service/chat_spec.js
pw-spec/service/stream_spec.js
pw-spec/stub/stream.js
pw-spec/stub/transport.js
ご覧のように
pw-spec/integration/service/auth_spec.js
pw-spec/integration/service/chat_spec.js
pw-spec/integration/service/transport_spec.js
[1]から欠落しています。
このタイプの状況には、ニーズに応じて2つのアプローチがあります。
1つの解決策は置くことです
# generated files
*.js
pw-spec /.gitignore内。
2番目の解決策は次のとおりです。
/pw-spec/*.js
/pw-spec/*/*.js
/pw-spec/*/*/*.js
メインの.gitignoreファイルなど。このアプローチは、サブディレクトリがさらに追加されると脆弱になります。
私は通常、無視しているファイルを生成するMakefileと同じレベルに.gitignoreファイルを配置することを好みます。
.gitignore
にpw-spec
を作成し、次の2行を挿入します。
*.js
*/*.js
また、このサブディレクトリで「追跡解除」するファイルをすでに追跡している場合は、そのファイルをインデックスから認識できないようにする必要があることにも注意してください。
git rm --cached path/to/file
たとえば、ディレクトリpw-spec
にある場合、次のことができます。
find -type f -name "*.js" | xargs git rm --cached