Emi*_*nov 19 git shell glob gitignore
我有以下目录结构和文件.
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
Run Code Online (Sandbox Code Playgroud)
我想忽略*.js目录中任何位置的所有文件pw-spec.
但是,添加以下模式.gitignore不会削减它:
pw-spec/*.js
pw-spec/**/*.js
Run Code Online (Sandbox Code Playgroud)
问题是第二个只匹配树中正好1级深的js文件,而我想匹配下的所有js文件pw-spec.
干
ls pw-spec/**/*.js
Run Code Online (Sandbox Code Playgroud)
产生[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
Run Code Online (Sandbox Code Playgroud)
如你看到的
pw-spec/integration/service/auth_spec.js
pw-spec/integration/service/chat_spec.js
pw-spec/integration/service/transport_spec.js
Run Code Online (Sandbox Code Playgroud)
在[1]中缺失.
根据您的需要,这种情况有两种方法.
一个解决方案是放
# generated files
*.js
Run Code Online (Sandbox Code Playgroud)
在pw-spec/.gitignore中.
第二个解决方案是:
/pw-spec/*.js
/pw-spec/*/*.js
/pw-spec/*/*/*.js
Run Code Online (Sandbox Code Playgroud)
在主.gitignore文件中等等.如果添加更多子目录,这种方法很脆弱.
我通常更喜欢将.gitignore文件放在与生成我忽略的文件的Makefile相同的级别.