Игнорирование файлов в 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
) из хранилища, но оставит его в вашей локальной папке.