offline version v3
Запись на курсы по HTML, CSS, JavaScript, PHP, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗gtPmBsIg 20 of 66 menu

Игнорирование файлов в Git

В проектах часто встречаются файлы, которые мы не хотели бы сохранять в системе Git. Это могут быть временные файлы, порождаемые вашим кодом, файлы с кешем, а также файлы с паролями.

Мы можем принудительно заставить Git игнорировать такие папки и файлы. Это делается с помощью специального файла .gitignore, размещаемого в папке с вашим проектом.

В этом файле на каждой строке нужно писать путь к файлу или папке, которые мы хотим игнорировать. Давайте посмотрим на примерах, какой здесь допустим синтаксис.

Пример

Косая черта перед именем файла соответствует файлу в корне репозитория:

/debug.log

Для примера будут проигнорированы следующие файлы:

<$structure$> debug.log <-structure->

Но не:

<$structure$> logs/debug.log <-structure->

Пример

Без косой черты в начале будут игнорироваться файлы и в подпапках:

debug.log

Для примера будут проигнорированы следующие файлы:

<$structure$> debug.log logs/debug.log <-structure->

Пример

Без косой черты в конце будут игноророваться и файлы без расширения, и папки с таким именем:

logs

Для примера будут проигнорированы следующие файлы:

<$structure$> logs logs/debug.log logs/latest/foo.bar build/logs build/logs/debug.txt <-structure->

Пример

С косой чертой в конце будут игнорироваться только папки:

logs/

Для примера будут проигнорированы следующие папки:

<$structure$> logs/ logs/debug.log logs/latest/foo.bar build/logs build/logs/debug.txt <-structure->

Пример

Две звездочки в начале папки заставят игнорировать все папки содержащую такую подпапку в пути:

**/logs

Для примера будут проигнорированы следующие файлы:

<$structure$> logs/debug.log logs/monday/foo.bar build/logs/debug.log <-structure->

Пример

Две звездочки можно также использовать для сопоставления файлов на основе их имени и имени родительской папки:

**/logs/debug.log

Для примера будут проигнорированы следующие файлы:

<$structure$> logs/debug.log build/logs/debug.log <-structure->

Но не:

<$structure$> logs/build/debug.log <-structure->

Пример

Одна звездочка — это подстановочный знак, который может соответствовать как нескольким символам, так и ни одному:

*.log

Для примера будут проигнорированы следующие файлы:

<$structure$> debug.log foo.log .log logs/debug.log <-structure->

Пример

Добавление восклицательного знака в начало шаблона отменяет действие шаблона. Если файл соответствует некоему шаблону, но при этом также соответствует отменяющему шаблону, указанному после, такой файл не будет игнорироваться:

*.log !important.log

Для примера будут проигнорированы следующие файлы:

<$structure$> important.log <-structure->

Но не:

<$structure$> file.log <-structure->

Пример

Знак вопроса соответствует строго одному символу:

debug?.log

Для примера будут проигнорированы следующие файлы:

<$structure$> debug0.log debugg.log <-structure->

Но не:

<$structure$> debug10.log <-structure->

Пример

Квадратные скобки соответствуют одному символу из указанного набора:

debug[01].log

Для примера будут проигнорированы следующие файлы:

<$structure$> debug0.log debug1.log <-structure->

Но не:

<$structure$> debug2.log debug01.log <-structure->

Пример

Квадратные скобки можно также использовать для указания соответствия одному символу из заданного диапазона:

debug[0-9].log

Для примера будут проигнорированы следующие файлы:

<$structure$> debug0.log debug1.log <-structure->

Но не:

<$structure$> debug10.log <-structure->

Пример

Восклицательный знак можно использовать для указания соответствия любому символу, кроме символов из указанного набора:

debug[!01].log

Для примера будут проигнорированы следующие файлы:

<$structure$> debug2.log <-structure->

Но не:

<$structure$> debug0.log debug1.log debug01.log <-structure->

Пример

Диапазоны могут быть цифровыми или буквенными:

debug[a-z].log

Для примера будут проигнорированы следующие файлы:

<$structure$> debuga.log debugb.log <-structure->

Но не:

<$structure$> debug1.log <-structure->

Пример

Две звездочки соответствуют множеству каталогов или ни одному:

logs/**/debug.log

Для примера будут проигнорированы следующие файлы:

<$structure$> logs/debug.log logs/monday/debug.log logs/monday/pm/debug.log <-structure->

Пример

Подстановочные символы можно использовать и в именах каталогов:

logs/*day/debug.log

Для примера будут проигнорированы следующие файлы:

<$structure$> logs/monday/debug.log logs/tuesday/debug.log <-structure->

Но не:

<$structure$> logs/latest/debug.log <-structure->

Практические задачи

Сделайте так, чтобы игнорировались файлы из папки cache.

Сделайте так, чтобы игнорировались файлы из папок cache и tmp.

Сделайте так, чтобы игнорировался файл err.txt и папка tmp.