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

НАЧАТЬ