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 и на серверных хуках.
Идеальная схема такая:
- локальные хуки — быстрый фидбек разработчику
- CI/CD — обязательная проверка для всех
- server-side hooks — строгий контроль на уровне репозитория
Популярные инструменты
- Husky — для JavaScript/TypeScript-проектов
- pre-commit — мощный и удобный фреймворк для Python и мульти-язычных репозиториев
- lefthook — быстрый инструмент для больших команд и монореп
Итог
Git Hooks — это не “лишняя бюрократия”, а первый рубеж качества кода ✅
Они помогают стандартизовать процесс разработки, защищают репозиторий от случайных ошибок и делают ревью чище. Лучший результат дают в связке с CI/CD, а не вместо него.
👀 Загляните в подборку каналов про IT — там ещё больше практики, инструментов и кейсов для разработчиков.