Такой .gitignore он отрежет кэш/логи/зависимости/IDE/секреты, не мешая нормальной разработке.
Готовое решение
# ========================================================= # Железобетонный .gitignore для веб-проектов (2026) # PHP/MODX + Node/Next + Python + IDE + секреты + мусор # ========================================================= # ---------------------------- # OS / Editor / IDE мусор # ---------------------------- .DS_Store Thumbs.db Desktop.ini *.swp *.swo *.tmp *~ *.bak *.orig *.rej .idea/ .vscode/ *.code-workspace # При желании можно коммитить часть VSCode: # .vscode/* # !.vscode/extensions.json # !.vscode/settings.json # ---------------------------- # Логи / временные файлы / дампы / архивы # ---------------------------- *.log logs/ log/ tmp/ temp/ .cache/ cache/ *.sql *.sqlite *.sqlite3 *.gz *.zip *.7z *.rar *.tar *.tgz backup/ backups/ dump/ dumps/ # ---------------------------- # Секреты (ВАЖНО) # ---------------------------- .env .env.* !.env.example !.env.template # Токены/ключи/сертификаты *.pem *.key *.p12 *.pfx *.crt *.cer *.der # Если вдруг кто-то положил ssh-ключи в проект (не надо, но бывает) id_rsa id_rsa.pub id_ed25519 id_ed25519.pub # NPM/Composer токены .npmrc composer-auth.json auth.json # ---------------------------- # PHP / Composer # ---------------------------- /vendor/ /composer.phar # В большинстве проектов composer.lock НУЖЕН (фиксирует версии). # Если это библиотека (а не приложение) и lock мешает — уберите его из репо осознанно. # composer.lock # ---------------------------- # Node.js / фронтенд сборка (React/Next/Vite/etc.) # ---------------------------- node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* dist/ build/ .out/ coverage/ # Next.js .next/ out/ # Turbo / Vite / прочие кэши .turbo/ .vite/ .eslintcache # ---------------------------- # Python # ---------------------------- __pycache__/ *.py[cod] *.pyo .venv/ venv/ ENV/ env/ .pytest_cache/ .mypy_cache/ .ruff_cache/ .cache/ # ---------------------------- # MODX Revolution (типовой минимум, чтобы не тащить мусор) # ---------------------------- /core/cache/ /core/packages/ /assets/cache/ # Конфиг MODX часто содержит пароли (DB) — лучше не коммитить. # Вместо этого держите пример: config.inc.php.sample /core/config/config.inc.php !/core/config/config.inc.php.sample # Если используете кастомные экспорты/бэкапы внутри core /core/export/ # ---------------------------- # Прочие типовые runtime-папки приложений # ---------------------------- runtime/ storage/ var/
Пример использования
- Шаг 1: положи файл в корень репозитория как
.gitignore. - Шаг 2: проверь, что нужные файлы не попали под игнор случайно.
- Шаг 3: если какие-то файлы уже были закоммичены раньше — Git продолжит их отслеживать (см. блок “Тест/проверка”).
Краевые случаи
- Надо игнорировать “всё .env.*”, но оставить пример: уже сделано через
!.env.exampleи!.env.template. - Команде нужны настройки VSCode: раскомментируй блок с
.vscode/*и добавь исключения на нужные файлы через!. - Нужно версионировать сборку: удали/закомментируй строки про
dist/build/.next.
Безопасность
- .gitignore не спасает, если секрет уже закоммичен: его надо вычищать из истории (например,
git filter-repoили BFG) и менять сам секрет. - Храни секреты в переменных окружения/секрет-хранилище, а в репозитории — только шаблоны
.env.example.
Производительность
- Игнор
vendor,node_modules,.next, кэшей и логов резко ускоряетgit status, поиск и индексацию, и уменьшает размер репо.
Совместимость
- Работает для Git на Linux/Windows/macOS.
- Подходит для монорепо и одиночных проектов (если монорепо — можно дублировать локальные
.gitignoreв подпапках).
Тест/проверка
- Проверить, что именно игнорируется:
git status --ignored - Понять, какая строка сработала:
git check-ignore -v путь/к/файлу - Если файл уже отслеживается, а ты добавил его в игнор — убрать из индекса (не удаляя с диска):
git rm -r --cached путь
Альтернативы
- Глобальный ignore для твоей машины:
~/.config/git/ignore(удобно для IDE-мусора, чтобы не дублировать в каждом репо). - Локальные исключения только для себя:
.git/info/exclude(не попадёт в репозиторий).
Комментарии
0Нашли ошибку или хотите дополнить материал?