Git Hooks: защита от плохого кода в репозитории

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

git hookspre-commitci/cd

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

Почему это важно?

Даже сильные команды регулярно сталкиваются с типовыми проблемами:

  • в коммит попадает неотформатированный код
  • проходят файлы с секретами: токены, пароли, ключи
  • в main уходит код без тестов
  • разработчики забывают запускать линтеры вручную

Git Hooks закрывают эти риски автоматически ⚙️

Какие хуки используются чаще всего

  • pre-commit — запускается перед коммитом. Проверяет форматирование, линтеры, типизацию, наличие секретов
  • commit-msg — проверяет сообщение коммита, например по Conventional Commits
  • pre-push — срабатывает перед отправкой в удалённый репозиторий. Здесь часто запускают тесты и проверки сборки
  • pre-receive / update / post-receive — серверные хуки, которые работают уже на стороне Git-сервера и помогают enforce-политику для всей команды

Что стоит проверять через Git Hooks

  • форматирование: Prettier, Black, gofmt
  • линтинг: ESLint, Pylint, golangci-lint
  • тесты: unit и smoke
  • поиск секретов: gitleaks, truffleHog
  • размер файлов и запрет на коммит бинарников
  • корректность названия веток и сообщений коммитов

Пример практической пользы

Если настроить pre-commit, разработчик не сможет закоммитить код с ошибками линтера или случайно добавить .env с ключами 🔐

Если добавить pre-push, в репозиторий не уйдёт код, который не проходит тесты. Это снижает количество “красных” CI-сборок и экономит время команды 🚀

Важный нюанс

Локальные Git Hooks можно обойти, например через --no-verify. Поэтому для критичных правил лучше дублировать проверки в CI/CD и на серверных хуках.

Идеальная схема такая:

  1. локальные хуки — быстрый фидбек разработчику
  2. CI/CD — обязательная проверка для всех
  3. server-side hooks — строгий контроль на уровне репозитория

Популярные инструменты

  • Husky — для JavaScript/TypeScript-проектов
  • pre-commit — мощный и удобный фреймворк для Python и мульти-язычных репозиториев
  • lefthook — быстрый инструмент для больших команд и монореп

Итог

Git Hooks — это не “лишняя бюрократия”, а первый рубеж качества кода ✅

Они помогают стандартизовать процесс разработки, защищают репозиторий от случайных ошибок и делают ревью чище. Лучший результат дают в связке с CI/CD, а не вместо него.

👀 Загляните в подборку каналов про IT — там ещё больше практики, инструментов и кейсов для разработчиков.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же