Игнорирование файлов в Git
В проектах часто встречаются файлы, которые мы не хотели бы сохранять в системе Git. Это могут быть временные файлы, порождаемые вашим кодом, файлы с кэшем, а также файлы с паролями.
Мы можем принудительно заставить
Git игнорировать такие папки и файлы.
Это делается с помощью специального
файла .gitignore
, размещаемого
в папке с вашим проектом.
В этом файле на каждой строке нужно писать путь к файлу или папке, которые мы хотим игнорировать. Давайте посмотрим на примерах, какой здесь допустим синтаксис.
Пример
Косая черта перед именем файла соответствует файлу в корне репозитория:
/debug.log
Для примера будут проигнорированы следующие файлы:
- debug.log
Но не:
- logs/debug.log
Пример
Без косой черты в начале будут игнорироваться файлы и в подпапках:
debug.log
Для примера будут проигнорированы следующие файлы:
- debug.log
- logs/debug.log
Пример
Без косой черты в конце будут игноророваться и файлы без расширения, и папки с таким именем:
logs
Для примера будут проигнорированы следующие файлы:
- logs
- logs/debug.log
- logs/latest/foo.bar
- build/logs
- build/logs/debug.txt
Пример
С косой чертой в конце будут игнорироваться только папки:
logs/
Для примера будут проигнорированы следующие папки:
- logs/
- logs/debug.log
- logs/latest/foo.bar
- build/logs
- build/logs/debug.txt
Пример
Две звездочки в начале папки заставят игнорировать все папки содержащую такую подпапку в пути:
**/logs
Для примера будут проигнорированы следующие файлы:
- logs/debug.log
- logs/monday/foo.bar
- build/logs/debug.log
Пример
Две звездочки можно также использовать для сопоставления файлов на основе их имени и имени родительской папки:
**/logs/debug.log
Для примера будут проигнорированы следующие файлы:
- logs/debug.log
- build/logs/debug.log
Но не:
- logs/build/debug.log
Пример
Одна звездочка — это подстановочный знак, который может соответствовать как нескольким символам, так и ни одному:
*.log
Для примера будут проигнорированы следующие файлы:
- debug.log
- foo.log
- .log
- logs/debug.log
Пример
Добавление восклицательного знака в начало шаблона отменяет действие шаблона. Если файл соответствует некоему шаблону, но при этом также соответствует отменяющему шаблону, указанному после, такой файл не будет игнорироваться:
*.log
!important.log
Для примера будут проигнорированы следующие файлы:
- important.log
Но не:
- file.log
Пример
Знак вопроса соответствует строго одному символу:
debug?.log
Для примера будут проигнорированы следующие файлы:
- debug0.log
- debugg.log
Но не:
- debug10.log
Пример
Квадратные скобки соответствуют одному символу из указанного набора:
debug[01].log
Для примера будут проигнорированы следующие файлы:
- debug0.log
- debug1.log
Но не:
- debug2.log
- debug01.log
Пример
Квадратные скобки можно также использовать для указания соответствия одному символу из заданного диапазона:
debug[0-9].log
Для примера будут проигнорированы следующие файлы:
- debug0.log
- debug1.log
Но не:
- debug10.log
Пример
Восклицательный знак можно использовать для указания соответствия любому символу, кроме символов из указанного набора:
debug[!01].log
Для примера будут проигнорированы следующие файлы:
- debug2.log
Но не:
- debug0.log
- debug1.log
- debug01.log
Пример
Диапазоны могут быть цифровыми или буквенными:
debug[a-z].log
Для примера будут проигнорированы следующие файлы:
- debuga.log
- debugb.log
Но не:
- debug1.log
Пример
Две звездочки соответствуют множеству каталогов или ни одному:
logs/**/debug.log
Для примера будут проигнорированы следующие файлы:
- logs/debug.log
- logs/monday/debug.log
- logs/monday/pm/debug.log
Пример
Подстановочные символы можно использовать и в именах каталогов:
logs/*day/debug.log
Для примера будут проигнорированы следующие файлы:
- logs/monday/debug.log
- logs/tuesday/debug.log
Но не:
- logs/latest/debug.log
Практические задачи
Сделайте так, чтобы игнорировались
файлы из папки cache
.
Сделайте так, чтобы игнорировались
файлы из папок cache
и tmp
.
Сделайте так, чтобы игнорировался
файл err.txt
и папка tmp
.