Menu

Генератор .gitignore

Соберите чистый .gitignore для любого стека - языки, фреймворки, IDE и ОС.

Автор Nethanel Bar, Co-founder & CEO

Последнее обновление

Готовы по-настоящему научиться программировать?

Coddy учит на практике: вы пишете настоящий код прямо в браузере — интерактивные уроки, мгновенная проверка и помощь ИИ, когда застряли.

Что такое генератор .gitignore?

Каждому 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 могут сосуществовать - корень репо, подпапки плюс глобальный ~/.gitignore_global для личных инструментов вроде JetBrains или вашей ОС.
  • Порядок важен для отрицаний: позднее !pattern сработает, только если более ранняя запись действительно игнорировала файл. Отрицанием папки нельзя вернуть файл внутри неё.

Как сгенерировать .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 в корне репо, либо **Скачать** - сохраните файл сразу.

Синтаксис .gitignore - шпаргалка

Самые частые паттерны. Полная документация: git-scm.com/docs/gitignore.

ПаттернЗначениеПример
node_modulesИгнорировать файл или папку с этим точным именем в любой точке дереваЗахватит и /node_modules, и src/node_modules
node_modules/Слэш в конце - совпадает только с **папкой**, не с файлом того же имениСлучайно названный файлом node_modules не попадёт
/buildСлэш в начале - привязка только к каталогу .gitignoreЗахватит /build, но не src/build
*.logGlob - любой файл, оканчивающийся на .logЗахватит error.log, debug.log, logs/foo.log
!important.logОтрицание - вернёт файл, попавший под более раннее правилоСочетайте с *.log, чтобы оставить один лог отслеживаемым
docs/**/draftДвойная звезда - draft в любой подпапке docs/Захватит docs/v1/draft и docs/2025/q1/draft
# commentКомментарий - Git игнорирует строки, начинающиеся на #Группируйте правила заголовками вроде # Node.js

Примеры .gitignore для пробы

Минимальный .gitignore для Node.js + macOS

Что нужно любому Node-проекту на Mac

# Node.js node_modules/ npm-debug.log* dist/ .env .env.local # macOS .DS_Store ._*

Минимум для любого Node-проекта, расшаренного коллеге на macOS. Даже маленький pet-проект должен иметь эти правила - без .DS_Store и node_modules/ вы будете воевать с бессмысленными конфликтами.

Python + Django + JetBrains

Типовой серверный Python-стек

# Python __pycache__/ *.py[cod] .venv .pytest_cache/ # Django *.log local_settings.py db.sqlite3 media/ staticfiles/ # JetBrains .idea/ *.iml

Типичный 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.
  • Пытаться вернуть файл из игнорируемой папки. Раз build/ игнорируется, никакое отрицание не вернёт build/keep.txt - Git внутрь даже не заглянет. Переструктурируйте или вынесите файл наружу.
  • Смешивать персональные настройки редактора с общим .gitignore проекта. Вы единственный, кто на JetBrains в команде VS Code? Кладите .idea/ в **глобальный** ~/.gitignore_global, а не в репо.

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.

Узнать больше

Другие инструменты разработчика

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ