May 1, 2021

Боремся с мусором в Git

Расскажем о простых приемах отбора отслеживаемых файлов вашего проекта. Как можно догадаться, секрет заключается в правильном заполнении файла .gitignore, чем мы и займемся в этой статье.

Так как любой неочевидный программный проект состоит из множества файлов вложенных папок, снова файлов и подпапок (и т д…), контролировать изменения всего этого богатства и тем более постоянно выгружать на сервер, как правило, нецелесообразно. Постоянным изменениям подвергаются лишь отдельные файлы. Для регулирования этих процессов в системе управления версиями Git существует специальный файл под названием .gitignore.

Он состоит из строк, каждая из которых указывает на шаблон имен файлов и папок, подлежащих игнорированию при индексации. При этом порядок применения правил снизу вверх так, что более низкие могут отменить действие верхних (например, задать исключения для вышестоящего шаблона, что делается указанием символа ! перед шаблоном). Ниже перечислю полезные советы для настройки большого проекта.

Исключение всех файлов из корневой директории, кроме имеющих определенное расширение

Инициализируем папку проекта (имя test) для работы с Git (подробнее писал в статье) и вызовем команду git status, чтобы увидеть статус содержимого:

Предположим, нашей целью является выборка только файлов с расширением .py. Тогда создадим файл .gitignore и зададим некоторые правила. Во-первых, исключим все в корневой директории, не относящееся к файлам заданного типа:

Повторно выведем статус содержимого проекта:

В данном случае мы задали правило исключения всего содержимого корневой директории кроме файлов с расширением .py.

Добавление подпапок

В указанном выше случае мы исключили из области индексирования и подпапки:

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

А теперь повторим наши действия:

Создаем правила для подпапок

Аналогичным образом можно настроить правила для подпапок. Изменим файл .gitignore:

Теперь удалим папку db_check из области индексирования и попробуем опять добавить:

Не получается, поэтому по аналогии с приведенным выше примером добавим еще одну строку в .gitignore, разрешив включение файлов *.py:

Дальше можно продолжать вводить более специфические правила.

Следует отметить, что интересные примеры файлов .gitignore для различных языков программирования, исключающих шаблоны артефактов, производимых служебными инструментами можно найти по адресу https://github.com/github/gitignore.