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

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

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

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

Пример

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

text/debug.log

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

Но не:

Пример

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

textdebug.log

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

Пример

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

textlogs

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

Пример

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

textlogs/

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

Пример

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

text**/logs

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

Пример

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

text**/logs/debug.log

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

Но не:

Пример

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

text*.log

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

Пример

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

text*.log
!important.log

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

Но не:

Пример

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

textdebug?.log

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

Но не:

Пример

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

textdebug[01].log

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

Но не:

Пример

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

textdebug[0-9].log

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

Но не:

Пример

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

textdebug[!01].log

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

Но не:

Пример

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

textdebug[a-z].log

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

Но не:

Пример

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

textlogs/**/debug.log

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

Пример

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

textlogs/*day/debug.log

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

Но не:

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

Задание 1

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

Задание 2

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

Задание 3

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