7. .gitignore
В этом уроке мы разберемся, как заставить Git игнорировать определенные файлы и папки в вашем проекте. Это важно, чтобы не засорять репозиторий ненужными данными и не коммитить секретную информацию.
Что такое .gitignore?
Заголовок раздела «Что такое .gitignore?».gitignore - это обычный текстовый файл, который содержит список шаблонов, указывающих Git, какие файлы и папки следует игнорировать. Это позволяет исключить из отслеживания временные файлы, файлы конфигурации, скомпилированный код и другие элементы, которые не должны попадать в репозиторий.
Как это работает?
Заголовок раздела «Как это работает?»В файле .gitignore каждая строка представляет собой шаблон. Git сравнивает пути файлов и папок с этими шаблонами. Если путь соответствует шаблону, Git игнорирует файл или папку.
Вот несколько простых правил:
#- Строки, начинающиеся с#, являются комментариями./- Указывает, что шаблон должен применяться только к файлам и папкам в корневом каталоге репозитория.*- Подстановочный знак, соответствующий любому количеству символов.?- Подстановочный знак, соответствующий одному символу.!- Инвертирует шаблон. Если файл соответствует шаблону, начинающемуся с!, он будет включен в отслеживание, даже если он соответствует более раннему шаблону.
Практические примеры
Заголовок раздела «Практические примеры»Создадим файл .gitignore в корне вашего репозитория.
touch .gitignoreТеперь откройте .gitignore в вашем текстовом редакторе и добавьте несколько правил:
# Игнорировать все файлы с расширением .log*.log
# Игнорировать папку node_modulesnode_modules/
# Игнорировать файл config.json, находящийся в корне репозитория/config.json
# Игнорировать все файлы .tmp, но не файл important.tmp*.tmp!important.tmpВ этом примере:
- Мы игнорируем все файлы, заканчивающиеся на
.log. - Мы игнорируем всю папку
node_modules, содержащую установленные библиотеки Javascript. - Мы игнорируем
config.jsonв корне репозитория. Это полезно для хранения локальных настроек, которые не нужно публиковать. - Мы игнорируем все файлы с расширением
.tmp, кромеimportant.tmp, который мы намеренно включаем.
Важно: .gitignore влияет только на файлы, которые еще не отслеживаются Git. Если вы уже добавили файл в репозиторий, а затем добавили правило для его игнорирования, Git продолжит отслеживать этот файл. Чтобы перестать отслеживать, нужно удалить его из индекса Git:
git rm --cached <имя_файла>git commit -m "Удаляем файл из отслеживания"Жизненный пример
Заголовок раздела «Жизненный пример»В реальных проектах .gitignore используется повсеместно.
- Веб-сайты: Игнорируются файлы кэша, логи, скомпилированные ресурсы (например, CSS и JavaScript после минификации), файлы конфигурации с секретными ключами API.
- Приложения: Игнорируются файлы сборки, временные файлы, папки с зависимостями (например,
node_modulesв JavaScript-проектах илиvenvв Python-проектах). - Фреймворки: Каждый фреймворк имеет свои особенности, но общая цель - игнорировать все, что не является частью исходного кода и необходимо для разработки. Например, в проекте на React игнорируется папка
buildпосле сборки проекта.
Пример для React-проекта:
node_modules/build/.envПример для Python-проекта:
__pycache__/*.pycvenv/Ключевые моменты
Заголовок раздела «Ключевые моменты».gitignoreпозволяет исключить файлы и папки из отслеживания Git.- Он должен находиться в корне репозитория.
- Используйте шаблоны для указания игнорируемых файлов и папок.
.gitignoreвлияет только на неотслеживаемые файлы.- Удалите файлы из индекса Git, чтобы перестать их отслеживать.
- Используйте
.gitignoreдля хранения локальных настроек и секретных ключей.
Интерактивный пример
Заголовок раздела «Интерактивный пример»Конструктор .gitignore — выбери технологии: