Вернуться к статьям

Быстрый старт с Git Hooks: автоматизация рутинных процессов прямо в вашем репозитории

Программирование 26.02.2026 1 просмотров

Ключевые слова

git git hooks автоматизация линтер pre-commit разработка инструменты форматирование контроль качества best practices программирование
Быстрый старт с Git Hooks: автоматизация рутинных процессов прямо в вашем репозитории

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

Что такое Git Hooks и зачем они нужны?

Git Hooks — это встроенный механизм Git, который позволяет автоматически запускать произвольные скрипты на определённых этапах работы с репозиторием (например, перед коммитом, пушем или мёрджем). Основное предназначение — автоматизация и контроль качества кода, сокращение количества ошибочных коммитов, экономия времени всей команды.

Где используются?

  • Pre-commit (до коммита): запуск линтеров, автоформаттеров или unit-тестов.
  • Pre-push (до отправки в удалённый репозиторий): прогон всех тестов, проверка соответствия ветки политике репозитория.
  • Commit-msg: валидация сообщения коммита по определённым правилам.

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

Практические сценарии применения Git Hooks

Применить хуки можно в разнообразных задачах. Рассмотрим несколько самых востребованных сценариев.

1. Автоматическая проверка качества кода (линтеры)

  • Перед каждым коммитом запускается линтер (например, flake8 для Python или eslint для JS).
  • В случае ошибок коммит блокируется до их исправления.
#!/bin/sh
# .git/hooks/pre-commit
eslint .
if [ $? -ne 0 ]; then
  echo "\nИспользуйте eslint: найдены ошибки!"
  exit 1
fi

2. Автоформатирование кода

  • Запуск prettier или black перед сохранением изменений.
  • Машинное форматирование обеспечивает единый стиль команды.
#!/bin/sh
black .

3. Запуск unit-тестов перед пушем

  • Все тесты должны пройти успешно до отправки на сервер.
  • Ошибочный пуш предотвращается автоматически.
#!/bin/sh
pytest
if [ $? -ne 0 ]; then
  echo "\nЕсть тесты с ошибками. Пуш запрещён."
  exit 1
fi

4. Проверка шаблона сообщений коммита (commit-msg)

  • Требование к формату сообщения (например, task ID в начале):
#!/bin/sh
MESSAGE=$(cat $1)
if ! echo "$MESSAGE" | grep -qE "^TASK-\\d+"; then
  echo "\nСообщение коммита должно начинаться с TASK-<номер>"
  exit 1
fi

Пошаговая настройка Git Hooks

Гит хранит хуки в папке .git/hooks/ каждого репозитория. Они представлены в виде bash-скриптов (или других совместимых форматов). Разберём процесс на примере pre-commit хука.

Шаг 1. Создаём или редактируем файл хука

  1. Перейдите в проект:
  2. cd /path/to/your/project
    
  3. Откройте папку .git/hooks/.
  4. Создайте файл pre-commit (или переименуйте pre-commit.sample):
  5. touch .git/hooks/pre-commit
    chmod +x .git/hooks/pre-commit
  6. Добавьте нужный скрипт (см. примеры выше).

Шаг 2. Проверяем работу

  1. Внесите изменения в код.
  2. Попробуйте сделать коммит:
  3. git add .
    git commit -m "test: commit with hook"
    
  4. Если скрипт возвращает ошибку (exit 1), коммит не произойдёт.

Шаг 3. Хранение и распространение хуков в команде

Нативные хуки не попадают в индекс гита. Чтобы не заставлять всех участников создавать хуки вручную, используют утилиты — менеджеры хуков:

  • pre-commit (https://pre-commit.com/) — кросc-языковое решение, удобно интегрируется во все популярные языки.
  • husky (экосистема JavaScript) — быстрая настройка хуков и распределение их через репозиторий.

Такие инструменты позволяют хранить конфигурацию хуков в репозитории и автоматически устанавливать их при клонировании, что критично для командной работы.

Заключение: стоит ли внедрять Git Hooks?

Git Hooks — незаменимый инструмент современного разработчика. Даже пара простых хуков (линтер, тесты, форматтер) сразу поднимают качество и экономят время вашего проекта. Главное — поддерживать сценарии актуальными и делиться ими с командой через специализированные инструменты (pre-commit, husky). Начните с малого — автоматизации проверки кода перед коммитом, постепенно добавляя новые полезные сценарии.

Внедряйте хуки — и пусть рутинная проверка кода займет секунды, а не часы!