АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗gtPmBsIg 20 of 66 menu

Игнорирование файлов в 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.

enru