I have the following directory structure and files.
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
I would like to ignore all *.js
files anywhere within pw-spec
directory.
However, adding the following patterns to .gitignore
doesn't cut it:
pw-spec/*.js
pw-spec/**/*.js
The problem is that the second one only matches js files that are exactly 1 level
deep within the tree, while I want to match all js files under pw-spec
.
Doing
ls pw-spec/**/*.js
produces [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
As you can see
pw-spec/integration/service/auth_spec.js
pw-spec/integration/service/chat_spec.js
pw-spec/integration/service/transport_spec.js
are missing from [1].
There are two approaches for this type of situation, depending on your needs.
One solution is to put
in pw-spec/.gitignore.
The second solution is to put:
and so forth in the main .gitignore file.This approach is brittle if more sub-directories are added.
I generally prefer to put the .gitignore file at the same level as the Makefile which generates the files that I am ignoring.
The difference is that
**
doesn't work, at least not for everyone. SeeWhy doesn't gitignore work in this case?
You can have a separate
.gitignore
inpw-spec/
Create a
.gitignore
inpw-spec
in which you insert these two lines:Also note that if you already have files tracked in this subdirectory which you want "untracked", you have to make them unknown to the index as such:
For instance, if in directory
pw-spec
you can do: