Генератор .gitignore
Что такое .gitignore
Файл .gitignore указывает системе контроля версий Git, какие файлы и директории не нужно отслеживать. Он размещается в корне репозитория и содержит паттерны имён файлов. Всё, что подходит под эти паттерны, Git будет игнорировать при добавлении изменений, коммитах и отображении статуса.
Зависимости и пакеты
Папки node_modules, vendor, venv содержат тысячи файлов сторонних библиотек. Они воссоздаются одной командой (npm install, pip install) и не должны засорять репозиторий. Без .gitignore размер проекта может вырасти в сотни раз.
Секреты и .env файлы
Файлы .env, config/secrets.yml, credentials.json содержат API-ключи, пароли к базам данных и токены. Попадание таких данных в публичный репозиторий — одна из главных причин утечек. Файл .gitignore предотвращает это.
Артефакты сборки
Директории build, dist, target, out содержат скомпилированный код, который генерируется автоматически из исходников. Хранить их в Git бессмысленно: они занимают место, создают конфликты слияния и замедляют работу с репозиторием.
Как Git отслеживает файлы
Понимание модели отслеживания Git помогает правильно настроить .gitignore и избежать типичных ошибок при работе с репозиторием.
1Рабочая директория (Working Directory)
Все файлы на диске вашего проекта. Git может видеть их или не видеть. Новые файлы, не указанные в .gitignore, имеют статус «untracked». Файлы, перечисленные в .gitignore, Git полностью игнорирует — они не появляются ни в git status, ни в git diff.
2Индекс (Staging Area)
Промежуточная область, где собираются изменения перед коммитом. Команда git add помещает файл в индекс. Файлы .gitignore не могут попасть в индекс через git add ., но если файл уже отслеживается, .gitignore его не удалит.
3Репозиторий (Repository)
После коммита файлы навсегда сохраняются в истории Git. Если вы случайно закоммитили секретный файл, добавление его в .gitignore не удалит его из истории. Для полного удаления нужно использовать git filter-branch или BFG Repo-Cleaner.
4Важный нюанс: уже отслеживаемые файлы
Файл .gitignore действует только на новые файлы (untracked). Если файл уже в репозитории, добавление его в .gitignore не прекратит отслеживание. Нужно сначала убрать файл из индекса командой git rm --cached filename, а затем закоммитить изменение.
Зачем нужен .gitignore
Правильно настроенный .gitignore — основа чистого, безопасного и профессионального репозитория. Вот ключевые задачи, которые он решает.
Чистый репозиторий
Без .gitignore в репозиторий попадают тысячи файлов зависимостей (node_modules, vendor), временные файлы и кэш. Это увеличивает размер в десятки раз и замедляет клонирование.
Защита секретов
API-ключи, пароли баз данных, токены авторизации — всё это хранится в .env файлах. Один неосторожный git push в публичный репозиторий может привести к утечке данных и взлому.
CI/CD пайплайны
Конвейеры сборки и деплоя (GitHub Actions, GitLab CI, Jenkins) работают быстрее, когда репозиторий содержит только исходный код без артефактов сборки и кэша.
Командная работа
Конфигурации IDE (.idea, .vscode) у каждого разработчика свои. Без .gitignore они создают постоянные конфликты слияния и засоряют историю коммитов.
Быстрый git status
Когда Git не нужно проверять тысячи файлов в node_modules, команды git status и git diff работают на порядок быстрее, особенно на больших проектах.
Кроссплатформенность
macOS создаёт .DS_Store, Windows — Thumbs.db. Без .gitignore эти системные файлы попадают в репозиторий и мешают разработчикам на других ОС.
Синтаксис .gitignore/ полное руководство
Файл .gitignore использует простой, но мощный синтаксис паттернов. Каждая строка — это одно правило. Пустые строки и комментарии (начинающиеся с #) игнорируются.
Точное имя файла
Укажите имя файла — Git будет игнорировать его в любой директории проекта. Для файла только в корне используйте слеш в начале.
.env # игнорировать .env в любой директории
/.env # только в корне репозитория
debug.log # любой debug.log в любой папкеWildcard-паттерны (* и **)
Звёздочка * заменяет любые символы (кроме /). Двойная звёздочка ** заменяет любое количество директорий.
*.log # все .log файлы
*.py[cod] # .pyc, .pyo, .pyd файлы
**/build/ # папка build на любом уровне
doc/**/*.pdf # все PDF в doc/ и подпапкахДиректории (слеш в конце /)
Слеш в конце паттерна означает, что правило применяется только к директориям, а не к файлам с таким же именем.
node_modules/ # игнорировать папку node_modules
build/ # игнорировать папку build
logs/ # игнорировать папку logsИсключения (отрицание !)
Восклицательный знак отменяет игнорирование для конкретного файла. Полезно, когда нужно исключить всё кроме одного файла.
*.log # игнорировать все логи
!important.log # но не important.log
.vscode/* # игнорировать всё в .vscode
!.vscode/settings.json # кроме settings.jsonКомментарии (#)
Строки, начинающиеся с #, являются комментариями и игнорируются. Используйте их для документирования правил.
# Зависимости
node_modules/
# Переменные окружения
.env
.env.localСовет: всегда добавляйте .gitignore в первый же коммит проекта. Это проще, чем потом удалять уже отслеживаемые файлы из истории Git.
Глобальный .gitignore: файлы ОС (.DS_Store, Thumbs.db) лучше добавить в глобальный ~/.gitignore_global, чтобы не дублировать в каждом проекте.
Популярные шаблоны по языкам
У каждого языка и фреймворка свои особенности: разные пакетные менеджеры, структуры сборки и конфигурационные файлы. Вот самые распространённые паттерны.
JavaScript / Node.js
React, Vue, Next.js, ExpressГлавное правило — node_modules/ (часто 200+ МБ). Добавляйте .env для переменных окружения, dist/ и build/ для артефактов сборки, coverage/ для отчётов тестов. Для Next.js также .next/ и out/. Yarn и pnpm имеют свои специфичные файлы для игнорирования.
Python
Django, Flask, FastAPIБайт-код Python (__pycache__, *.pyc) — основная цель. Виртуальные окружения (venv/, .venv/) могут весить гигабайты. Для Django — db.sqlite3, media/, staticfiles/. Не забудьте .mypy_cache/, .pytest_cache/ и Jupyter-чекпоинты (.ipynb_checkpoints/).
Java
Maven, Gradle, Spring BootСкомпилированные .class файлы, каталоги target/ (Maven) и build/ (Gradle). Пакеты .jar, .war, .ear тоже игнорируются. Для Spring Boot добавьте application-local.yml. Файлы IDE: .idea/, *.iml, .classpath, .project, .settings/.
Go / Rust
Современные компилируемые языкиGo: бинарные файлы (*.exe, *.dll, *.so), директория vendor/ (если используете вендоринг). Rust: каталог target/ (сборки Cargo) — может весить несколько гигабайт. Оба языка требуют минимальный .gitignore, так как имеют встроенные системы управления зависимостями.
Советы по работе с .gitignore
Практические рекомендации, которые помогут избежать типичных проблем при настройке игнорирования файлов в Git.
1Добавляйте .gitignore сразу
Создавайте .gitignore до первого коммита. Если секретные данные или зависимости уже попали в историю, простое добавление .gitignore не поможет — файлы останутся в прошлых коммитах и могут быть извлечены.
2Используйте глобальный .gitignore
Файлы ОС (.DS_Store, Thumbs.db) и настройки IDE лучше добавить в глобальный файл: git config --global core.excludesfile ~/.gitignore_global. Это избавляет от дублирования в каждом проекте.
3Проверяйте правила
Команда git check-ignore -v filename покажет, какое правило .gitignore применяется к конкретному файлу. Полезно для отладки сложных конфигураций, когда файл игнорируется неожиданно.
4Не игнорируйте lock-файлы
package-lock.json, yarn.lock, Pipfile.lock, Gemfile.lock, go.sum — эти файлы фиксируют точные версии зависимостей и должны быть в репозитории. Без них у разных разработчиков могут установиться разные версии пакетов.
5Используйте .env.example
Вместо .env (который игнорируется) создайте .env.example с пустыми значениями и закоммитьте его. Новые участники проекта скопируют его в .env и заполнят своими значениями. Это стандартная практика в командной разработке.
6Удаление из отслеживания
Если файл уже закоммичен, добавление в .gitignore не поможет. Выполните git rm --cached file для удаления из индекса (файл останется на диске), затем закоммитьте. Для папки: git rm -r --cached folder/.
Часто задаваемые вопросы
Был ли этот калькулятор полезен?
Инструмент справочный — не заменяет эксперта
Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.
Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.
Профессиональные решения — медицинские, финансовые, инженерные — должны приниматься только после консультации с квалифицированным специалистом. Не используйте автоматический расчёт как единственное основание для важных решений.
Ограничение ответственности. Авторы и разработчики сервиса не несут ответственности за прямой или косвенный ущерб, возникший из-за использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию результатов.
Похожие калькуляторы
Калькулятор технического долга: объём, SQALE, рефакторинг
Комплексный калькулятор технического долга: оценка объёма в часах и рублях, расчёт процентной ставки (стоимость бездействия), матрица приоритизации (impact vs effort), метрики качества кода (цикломатическая сложность, дупликация, покрытие тестами), план рефакторинга по спринтам, SQALE рейтинг A-E.
/technical-debt-calculatorОбъединить PDF онлайн — без загрузки на сервер
Склейка PDF в браузере через pdf-lib. До 20 файлов, до 50 МБ каждый. Локально, без отправки на сервер (152-ФЗ).
/obyedinit-pdf-onlajn-besplatnoСжать PDF онлайн — уменьшить размер локально
Сжатие PDF в браузере без потери качества. 3 уровня (object streams, удаление метаданных). До 50 МБ. Через pdf-lib, локально.
/szhat-pdf-onlajn-umenshit-razmerРазделить PDF на страницы — извлечь нужные онлайн
Разделение PDF на страницы локально: каждая страница отдельным файлом, диапазон или группами. Через pdf-lib, без отправки на сервер.
/razdelit-pdf-na-stranicy-onlajnJPG в PDF — конвертер с объединением
Конвертация JPG/PNG в PDF в браузере: до 30 картинок в один документ. Форматы A4/A3/Letter или подгонка под изображение.
/jpg-v-pdf-konverterПовернуть страницы PDF онлайн
Поворот всех или указанных страниц PDF на 90/180/270° за миллисекунды. Lossless. Через pdf-lib, без отправки на сервер.
/povernut-pdf-stranitsy-onlajnВодяной знак на PDF онлайн (кириллица)
Нанесение текстового знака («КОНФИДЕНЦИАЛЬНО», «ЧЕРНОВИК») на все страницы PDF. Поддержка русского текста через Canvas. 4 положения, регулировка прозрачности.
/dobavit-vodyanoj-znak-na-pdfНумерация страниц PDF онлайн
Проставьте номера страниц PDF в браузере: 4 формата, 6 положений, пропуск титульной, кастомный старт. Поддержка кириллицы. Через pdf-lib + Canvas.
/numerovat-stranitsy-pdf-onlajnPDF в JPG / PNG — конвертер страниц
Рендеринг каждой страницы PDF в картинку через pdfjs-dist (Mozilla). 4 уровня качества: 96 / 150 / 300 DPI и lossless PNG. До 50 МБ.
/pdf-v-jpg-konverter-onlajnИзвлечь текст из PDF онлайн
Извлечение текста из PDF в браузере через pdfjs-dist (Mozilla). Plain text, с разделителями страниц или JSON. Файлы не уходят на сервер.
/extract-text-iz-pdf-onlajnСжать JPG до 100 КБ для документов
Сжатие JPG до точного размера в КБ (50, 100, 200, 500, 1000) через бинарный поиск quality. Госуслуги, ЕГЭ, банки. Через browser-image-compression.
/szhat-jpg-onlajn-do-100kbУдалить EXIF из фото — GPS и метаданные
Удаление EXIF (геолокация, модель камеры, дата) из JPEG. Сначала показывает что внутри, потом удаляет. 152-ФЗ. В браузере, без отправки.
/udalit-exif-iz-foto-onlineИзменить размер фото в пикселях
Изменение размера JPG/PNG/WebP с сохранением пропорций. 6 пресетов (Full HD, HD, 1080×1080, 9:16). Через Canvas API, без сервера.
/izmenit-razmer-foto-onlajn-px-mbWebP в JPG / PNG — конвертер онлайн
Конвертация WebP → JPG / PNG в браузере. До 30 файлов одновременно. Через Canvas API, без сервера. Поддержка Госуслуг и старых форм.
/webp-v-jpg-png-konverterПовернуть фото — точно по градусам
Поворот картинки на любой угол (90°/произвольный) с превью. Цвет фона для уголков при произвольных углах. JPG/PNG/WebP. Через Canvas.
/povernut-foto-onlajn-besplatno