Menu

Генератор .gitignore

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

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

Быстрые стеки
Выберите шаблоны2 выбрано

Языки

Фреймворки

Редакторы и IDE

Операционные системы

.gitignore · 37 строк
# Node.js
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
.pnpm-store/
.npm
.yarn-integrity

# Coverage
coverage/
*.lcov
.nyc_output

# Build output
dist/
build/

# Environment
.env
.env.local
.env.*.local

# macOS
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

Что такое генератор .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 по шагам

  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.

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

НАЧАТЬ