Разбор перехватчиков Git
Изучите разные типы перехватчиков Git и этапы их выполнения в рабочем процессе Git.
«Разбор перехватчиков Git» — бесплатный урок Git & GitHub Professional Workflow на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Git & GitHub Professional Workflow, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Git & GitHub Professional Workflow содержит 4 уроков всего.
Что такое хуки Git?
Добро пожаловать в мир хуков Git! Хуки Git — это мощные настраиваемые скрипты, которые Git автоматически выполняет до или после таких событий, как создание фиксации, отправка изменений или получение отправленных фиксаций.
Представляйте их как автоматические контрольные точки или действия в рабочем процессе Git. Они помогают соблюдать стандарты проекта, автоматизировать задачи и интегрироваться с другими системами.
Где находятся хуки
Каждый репозиторий Git содержит каталог .git/hooks. В нём находятся примеры скриптов хуков (обычно с расширением .sample).
Чтобы активировать хук, просто удалите расширение .sample и сделайте файл исполняемым. После этого Git будет запускать его в нужный момент.
- Расположение:
.git/hooks/ - Файлы: скрипты оболочки (Bash, Python, Ruby и другие)
- Активация: переименовать и сделать исполняемым
Клиентская и серверная стороны
Хуки Git делятся на два основных типа в зависимости от места выполнения:
- Клиентские хуки: выполняются на Вашем локальном компьютере (например, перед созданием фиксации или перебазированием). Они предназначены для автоматизации личного рабочего процесса и соблюдения локальных правил.
- Серверные хуки: выполняются на удалённом сервере Git (например, когда Вы отправляете код в общий репозиторий). Они обеспечивают соблюдение правил проекта для всех участников.
Клиентский хук: pre-commit
Хук pre-commit — один из самых распространённых клиентских хуков. Он выполняется *до* того, как Git официально создаст фиксацию.
Если скрипт pre-commit завершается с ненулевым кодом состояния, Git отменяет создание фиксации. Это удобно для таких задач, как:
- проверка стиля кода
- запуск модульных тестов
- проверка наличия больших файлов или конфиденциальных данных
Клиентский хук: commit-msg
Хук commit-msg выполняется *после* ввода сообщения фиксации, но *до* окончательного создания фиксации.
Этот хук полезен для проверки соответствия сообщений фиксаций определённым соглашениям или форматам. Например, он может проверить:
- начинается ли сообщение с ID задачи (например,
[JIRA-123]) - не превышает ли длина сообщения установленный предел
- присутствуют ли определённые ключевые слова или отсутствуют ли они
Клиентский хук: post-commit
Хук post-commit выполняется *сразу после* успешного создания фиксации.
В отличие от pre-commit или commit-msg, этот хук не может изменить результат создания фиксации. Его часто используют для отправки уведомлений или интеграции, например для:
- уведомления участников команды
- обновления инструмента управления проектами
- запуска сборки непрерывной интеграции (CI), хотя чаще для этого используются серверные хуки
Серверный перехватчик: pre-receive
Переходя к серверным перехватчикам, pre-receive выполняется до обновления любых ссылок (например, веток или тегов) в удалённом репозитории.
Этот перехватчик позволяет эффективно обеспечивать соблюдение важных правил репозитория, например:
- запрещать прямую отправку изменений в ветку
main - требовать, чтобы все фиксации были подписаны
- проверять личность автора фиксации
Если этот перехватчик завершает работу с ненулевым кодом, вся отправка изменений отклоняется.
Серверный перехватчик: post-receive
Перехватчик post-receive запускается после того, как отправка изменений успешно обновила ссылки в удалённом репозитории.
Подобно post-commit, этот перехватчик не может отклонить отправку изменений. Обычно его используют для:
- запуска конвейеров CI/CD
- обновления внешних систем отслеживания задач
- отправки уведомлений команде по электронной почте
- развёртывания кода в промежуточной среде
Создание простого перехватчика
Чтобы создать перехватчик, достаточно создать файл с именем перехватчика (например, pre-commit) в каталоге .git/hooks/. Давайте создадим самый простой вариант:
#!/bin/sh
# This pre-commit hook will always succeed
echo "Running pre-commit hook..."
exit 0Разрешение на выполнение перехватчиков
После создания сценария перехватчика необходимо сделать его исполняемым. Иначе Git не будет его запускать. Используйте в терминале команду chmod:
chmod +x .git/hooks/pre-commit
Теперь при каждой попытке создать фиксацию Git будет выполнять этот сценарий!
Быстрая проверка: время запуска перехватчиков
Перехватчики Git запускаются в определённые моменты рабочего процесса. Понимание времени их запуска важно для эффективного использования.
Итоги: понимание перехватчиков Git
Вы сделали первый шаг в мощный мир перехватчиков Git!
- Перехватчики Git — это сценарии, автоматизирующие действия во время событий Git.
- Они находятся в каталоге
.git/hooks/вашего репозитория. - Перехватчики бывают клиентскими (на локальном компьютере) и серверными (в удалённом репозитории).
- Такие важные перехватчики, как
pre-commitиpre-receive, могут обеспечивать соблюдение правил, блокируя операции. - Перехватчики
post-commitиpost-receiveпредназначены для уведомлений или интеграций после выполнения действий.
Далее мы рассмотрим практические примеры реализации отдельных перехватчиков!
Часто задаваемые вопросы
Урок «Разбор перехватчиков Git» бесплатный?
Да — полный текст урока «Разбор перехватчиков Git» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Git & GitHub Professional Workflow, подпишись на CoddyKit PRO. Курс Git & GitHub Professional Workflow содержит 4 уроков всего.
Чему я научусь в уроке «Разбор перехватчиков Git»?
Изучите разные типы перехватчиков Git и этапы их выполнения в рабочем процессе Git. Ты практикуешь Git & GitHub Professional Workflow с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Git & GitHub Professional Workflow?
Предыдущий опыт не требуется. Git & GitHub Professional Workflow на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Разбор перехватчиков Git»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Git & GitHub Professional Workflow?
Да. Каждый урок Git & GitHub Professional Workflow включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Разбор перехватчиков Git
- Перехватчики до фиксации и после слияния
- Настройка конфигурации Git
- Общий доступ к хукам с Husky