Игнорирование файлов в Git. Больше, чем просто .gitignore

Источник: «Ignoring Files in Git. More than just .gitignore»
Существует несколько способов игнорировать передачу файлов в Git-репозитории из локального в удаленный.

Оглавление

Вам когда-нибудь требовалось исключить файл на локальной машине из коммитов в Git-репозиторий? Существует множество причин, по которым это необходимо сделать, в том числе:

  1. Конфигурационные файлы, содержащие ключи или пароли, которые не должны быть загружены.
  2. Внешние зависимости (например, vendor/ и node_modules/), которые должны быть созданы в процессе сборки.
  3. Каталоги для временного хранения.
  4. Лог-файлы.
  5. Каталоги с результатами процесса сборки (в репозитории должны находиться только исходники).
  6. Файлы .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) из хранилища, но оставит его в вашей локальной папке.

Дополнительные материалы

Предыдущая Статья

Создание изолируемых команд в Laravel

Следующая Статья

Установка и использование php-cs-fixer