Ответ 1
Разница в том, что **
не работает, по крайней мере, не для всех. См
Почему в этом случае не работает gitignore?
У вас может быть отдельный .gitignore
в pw-spec/
У меня есть следующая структура и файлы каталогов.
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
Проблема заключается в том, что вторая соответствует только js файлам, которые имеют ровно 1 уровень
глубоко внутри дерева, в то время как я хочу сопоставить все js файлы в pw-spec
.
Выполнение
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].
Разница в том, что **
не работает, по крайней мере, не для всех. См
Почему в этом случае не работает gitignore?
У вас может быть отдельный .gitignore
в pw-spec/
В зависимости от ваших потребностей существует два подхода для такого типа ситуаций.
Одним из решений является установка
# generated files
*.js
в pw-spec/ .gitignore.
Второе решение - поставить:
/pw-spec/*.js
/pw-spec/*/*.js
/pw-spec/*/*/*.js
и т.д. в основном файле .gitignore. Этот подход является хрупким, если добавлено больше подкаталогов.
Обычно я предпочитаю помещать файл .gitignore на тот же уровень, что и Makefile, который генерирует файлы, которые я игнорирую.
Создайте .gitignore
в pw-spec
, в который вы вставляете эти две строки:
*.js
*/*.js
Также обратите внимание, что если у вас уже есть файлы, отслеживаемые в этом подкаталоге, которые вы хотите "не отслеживать", вы должны сделать их неизвестными для индекса как такового:
git rm --cached path/to/file
Например, если в каталоге pw-spec
вы можете сделать:
find -type f -name "*.js" | xargs git rm --cached