Поиск по сайту:

Как настроить .gitignore в качестве белого списка


Файл .gitignore — важная часть любого репозитория Git; он предотвращает отслеживание и совместное использование нежелательных файлов в системе управления версиями. Обычно вы хотите игнорировать определенные файлы и папки, но иногда проще сделать наоборот.

Использование .gitignore в качестве белого списка

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

Во-первых, вам понадобятся две следующие директивы в верхней части файла, которые блокируют все по умолчанию с помощью всеобъемлющего подстановочного знака *:

*
!*/

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

Итак, вторая строка здесь сообщает Git, что нужно специально проверять подпапки. Восклицательный знак ! используется для превращения правила в белый список. Он соответствует всем каталогам, но поскольку внутри этих каталогов ничего не совпадает, Git пока не будет отслеживать какие-либо файлы только по этим двум строкам.

Это позволяет выполнять следующие настройки:

*
!*/

# track this file
!.gitignore

# whitelist everything in ./config/
!config/

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

Если вы хотите явным образом внести каталог и все его содержимое в белый список, необходимо использовать двойной подстановочный знак !config/**. Один подстановочный знак не будет рекурсивно распространяться на подкаталоги. Это переопределит все другие правила блокировки.

Отладка .gitignore

Если у вас возникли проблемы с конфигурацией, вы можете отладить ее с помощью команды Git check-ignore:

git check-ignore -v testfile.json