Игнорирование файлов в Git. Больше, чем просто .gitignore
Оглавление
- Файл репозитория .gitignore
- Глобальный файл .gitignore
- Персональные/локальные правила Git игнорирования
- Что делать, если я уже закоммитил файл
Вам когда-нибудь требовалось исключить файл на локальной машине из коммитов в Git-репозиторий? Существует множество причин, по которым это необходимо сделать, в том числе:
- Конфигурационные файлы, содержащие ключи или пароли, которые не должны быть загружены.
- Внешние зависимости (например,
vendor/иnode_modules/), которые должны быть созданы в процессе сборки. - Каталоги для временного хранения.
- Лог-файлы.
- Каталоги с результатами процесса сборки (в репозитории должны находиться только исходники).
- Файлы
.DS_Store(спасибо Apple)
Существует несколько способов игнорирования файлов в Git.
Файл репозитория .gitignore
Первый способ — создание файла в вашем репозитории под названием .gitignore. Этот файл должен содержать список файлов и папок, которые необходимо игнорировать при выполнении git status или git commit. Пример:
/node_modules
/vendor
.env
*.logФайл .gitignore заносится в ваш репозиторий и предоставляется всем остальным членам команды. Это рекомендуемый подход для правил, действующих в рамках проекта.
Принятые подстановочные знаки для списка файлов/каталогов можно найти здесь: Git - gitignore Documentation
Глобальный файл .gitignore
Глобальный файл .gitignore влияет на все репозитории, запущенные на вашей локальной машине. Это идеальное место для добавления правил игнорирования, связанных с вашей IDE, например /.idea для PHPStorm или /.vscode для VSCode.
Создайте файл .gitignore в вашем домашнем каталоге на локальной машине (или в любом другом удобном для вас месте). Затем установите этот файл в качестве глобального файла игнорирования с помощью этой команды:
git config --global core.excludesFile ~/.gitignoreПерсональные/локальные правила Git игнорирования
Бывают случаи, когда вы хотите исключить коммит изменений файлов из вашей локальной папки в Git-репозиторий, но только для вас, а не для всей команды. Например, мой проект использовал MySQL, но мне нужно было использовать докер-контейнер MariaDB на моей машине для поддержки Apple M1. Чтобы случайно не изменить Dockerfile, который был в репозитории, я использовал локальное правило Git, чтобы игнорировать файл только для себя.
Для этого создайте файл .git/info/exclude и добавьте в него файлы, которые вы хотите исключить, в том же формате, что и файл .gitignore.
Что делать, если я уже закоммитил файл
Если вы закоммитили файл, который теперь хотите игнорировать, сначала воспользуйтесь одним из описанных выше способов игнорирования, а затем выполните:
git rm --cached .DS_StoreЭто удалит файл (в вышеприведённом примере .DS_Store) из хранилища, но оставит его в вашей локальной папке.