Pre-commit хуки — это автоматические проверки, которые запускаются перед коммитом. Они помогают поймать ошибки раньше, чем код попадёт в репозиторий: от кривого форматирования до проваленных тестов и утечек секретов.
Почему это важно:
- снижают количество «мусорных» коммитов
- экономят время на code review
- делают стиль кода единым для всей команды
- переносят часть контроля качества “влево” — ближе к разработчику
Что обычно проверяют через pre-commit
- форматирование кода:
black,prettier,gofmt - линтинг:
eslint,flake8,ruff - базовые тесты
- проверку YAML/JSON/TOML
- поиск секретов: токены, ключи, пароли
- лишние пробелы, конфликтные маркеры merge, отсутствие финального перевода строки 🔍
Как это работает
Git поддерживает хуки в папке .git/hooks, но вручную их поддерживать неудобно. Поэтому чаще используют инструменты-обёртки:
- pre-commit — популярен в Python-экосистеме, но работает и с другими языками
- Husky — часто используют в JavaScript/TypeScript-проектах
- lefthook — быстрый и удобный вариант для разных стеков 🚀
Пример для pre-commit
- Установить:
pip install pre-commit- Создать
.pre-commit-config.yaml:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- Активировать:
pre-commit install- Проверить весь проект:
pre-commit run --all-filesТеперь при каждом git commit будут запускаться выбранные проверки.
Что дают хуки команде
- меньше споров о стиле кода
- меньше мелких замечаний в pull request
- выше стабильность main/master
- быстрее онбординг новых разработчиков 🛠️
Лучшие практики
- держите проверки быстрыми — долгие хуки раздражают
- не запускайте тяжёлые интеграционные тесты на pre-commit, лучше вынести их в CI
- фиксируйте версии инструментов, чтобы у всех были одинаковые результаты
- добавляйте автоисправление там, где это возможно
- не заменяйте хуками CI: локальные проверки и пайплайн должны дополнять друг друга ✅
Частая ошибка
Ставить слишком много проверок и делать коммит медленным. Хороший pre-commit — это баланс: быстрый фидбек, полезные проверки и минимум трения для разработчика.
Pre-commit хуки — простой способ встроить качество в ежедневную разработку, а не ловить проблемы уже после push 📌
Подборку каналов про IT — с практикой, инструментами и новостями разработки — стоит посмотреть отдельно.