Каждому Git-репозиторию нужен .gitignore. Это текстовый список путей, которые Git **не** должен отслеживать: артефакты сборки, папки зависимостей, конфиги IDE, мусор ОС вроде .DS_Store. Без него первый коммит случайно подтянет node_modules/, .env и target/, а разгребать этот бардак гораздо неприятнее, чем сразу настроить файл.
Каждая экосистема игнорирует своё, а в большинстве проектов несколько пересекаются. Типичное Node + TypeScript приложение на Mac с VS Code уже требует объединения четырёх разных списков. Писать это по памяти — значит забыть coverage/, утечь .env или прихватить чей-то .idea/ от коллеги на JetBrains.
Поэтому генератор упаковывает кураторские шаблоны канонического проекта github/gitignore — те же правила, что использует GitHub в авто-предложениях — и позволяет складывать их. Отметьте чекбоксы, инструмент отдаст один дедуплицированный .gitignore, который можно вставить прямо в репо. Без аккаунтов, без загрузки, всё в браузере.
Чему вы научитесь, собирая свой .gitignore
Шаблоны .gitignore используют glob-синтаксис: *.log игнорирует все логи, build/ — папку, !important.log возвращает файл, даже если глоб его подхватил.
Шаблоны применяются относительно расположения файла .gitignore — .gitignore внутри src/ затрагивает только файлы под src/.
Уже отслеживаемые файлы **не** игнорируются задним числом. Если вы закоммитили node_modules/, а потом добавили в .gitignore, нужно ещё git rm -r --cached node_modules, чтобы перестать отслеживать.
Как сгенерировать .gitignore по шагам
1
Выберите пресет (опционально)
Если проект подходит под распространённую сборку — Next.js, Django, Rails — нажмите пресет, чтобы отметить все нужные чекбоксы сразу. Дальше уберите/добавьте при необходимости.
2
Добавьте свои языки
У каждого языка свои артефакты: у Node — node_modules/, у Python — __pycache__/ и virtualenv'ы, у Java — target/ и .class. Отметьте языки, которые проект реально собирает.
3
Добавьте фреймворки
Поверх правил языка фреймворки добавляют свои каталоги: Next.js хочет .next/ и .vercel, Django — staticfiles/ и db.sqlite3, Rails — tmp/ и /storage/*. Отметьте то, что используете.
4
Добавьте редакторы и ОС
Включайте шаблоны редакторов, которыми пользуется **команда** (не только вы) — если кто-то на JetBrains или Vim, добавьте. Затем ОС: macOS оставляет .DS_Store, Windows — Thumbs.db, оба легко закоммитить случайно.
5
Скопируйте или скачайте
Правая панель показывает объединённый и дедуплицированный результат. **Скопировать** — и вставьте в .gitignore в корне репо, либо **Скачать** — сохраните файл сразу.
Минимум для любого Node-проекта, расшаренного коллеге на macOS. Даже маленький pet-проект должен иметь эти правила — без .DS_Store и node_modules/ вы будете воевать с бессмысленными конфликтами.
Типичный Django-бэкенд, написанный в PyCharm. Заметьте, локальный db.sqlite3 игнорируется — прод им не пользуется, а коммит проливает данные dev и ломает свежие клоны коллег.
Переопределить правило отрицанием
Игнорировать все логи, кроме одного
*.log
!keep-me.log
Первая строка игнорирует все .log. Правило !keep-me.log возвращает один конкретный файл. Отрицания работают только для файлов, попавших под более раннее правило — нельзя вернуть файл из игнорируемой папки.
Частые ошибки с .gitignore
Добавить .gitignore задним числом и надеяться, что закоммиченные файлы пропадут. Не пропадут — нужно git rm -r --cached <путь>, чтобы перестать отслеживать.
Закоммитить .env хотя бы раз. Один коммит — и секрет навсегда в истории. Добавьте .env* в .gitignore **до** первого коммита и ротируйте любой утёкший секрет.
Забыть OS-мусор в общих репо. Если хотя бы один коллега на macOS, а в репо нет правила .DS_Store, эти файлы будут лезть в каждый PR-diff.
FAQ генератора .gitignore
Откуда эти шаблоны?
Шаблоны конденсированы из open-source проекта github/gitignore — того же источника, что GitHub использует при создании нового репо. Каждый шаблон сокращён до правил, которые реально нужны командам, и сгруппирован по категориям.
Нужно ли коммитить сам файл .gitignore?
Да. .gitignore создан, чтобы версионироваться и расшариваться с командой. Это *договор* о том, что трекать и что нет. Исключение — личные предпочтения (например, ваш редактор); они должны быть в глобальном ~/.gitignore_global.
Как перестать отслеживать уже закоммиченный файл?
Сначала добавьте его в .gitignore, затем выполните git rm --cached <путь> (или git rm -r --cached <папка>), чтобы убрать из индекса без удаления с диска. Закоммитьте оба изменения вместе, чтобы коллеги увидели обновление.
Можно ли иметь несколько .gitignore в одном репо?
Да. Git ищет .gitignore в каждом каталоге и применяет правила к этому поддереву. Полезно в монорепо, где у фронта и бэка очень разные правила игнорирования — общие правила в корне, а специфичные — в каждой пакетной папке.
Чем .gitignore отличается от .git/info/exclude?
.gitignore коммитится и расшаривается с командой. .git/info/exclude живёт только в вашем локальном клоне и нужен для личных исключений, которые вы не хотите пушить. Для исключений во всех ваших репо — глобальный ~/.gitignore_global.