~/tools/git/gitignore-generator

Git

.gitignore Generator

Сгенерировать .gitignore по выбранному стеку технологий.

Как это работает

.gitignore забывают чуть ли не в каждом втором новом репозитории, и первый коммит радостно утаскивает в историю node_modules весом в полгигабайта или файл .env с паролями от продакшн базы. Потом это все приходится вычищать из истории гита отдельной болезненной процедурой, которой лучше избежать заранее. Gitignore generator online собирает готовый файл под нужный стек одним нажатием чекбоксов.

Инструмент включает проверенные временем правила для самых частых технологий: node modules и логи для Node.js, виртуальные окружения и кеш байткода для Python, системные файлы macOS и Windows, папки настроек VS Code и JetBrains IDE. Каждый пункт можно включить или выключить по отдельности.

Использовать стоит в первую же минуту после создания репозитория, до первого коммита, а не после того как половина ненужных файлов уже попала в git и требует отдельной чистки истории через фильтр бранч или BFG Repo Cleaner.

Частые вопросы

Что делать, если файл уже закоммичен, а потом добавлен в gitignore?

Просто добавление в gitignore не уберет уже отслеживаемый файл из репозитория, нужно дополнительно выполнить git rm минус минус cached с именем файла, только тогда git перестанет его отслеживать при следующих коммитах.

Можно ли объединить правила для нескольких технологий в одном файле?

Да, можно отметить несколько чекбоксов сразу, например Node.js и VS Code и macOS одновременно, все выбранные блоки правил соберутся в один итоговый файл.

Нужен ли отдельный .gitignore в каждой папке проекта?

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

Стоит ли добавлять package-lock.json или yarn.lock в gitignore?

Нет, файлы блокировки зависимостей обычно наоборот нужно коммитить в репозиторий, чтобы у всей команды и на CI ставились одинаковые версии пакетов, в gitignore идут только генерируемые и временные файлы.