Poznajemy Git Hooks
Poznaj różne typy Git hooks i momenty ich wykonywania w przepływie pracy Git.
Poznajemy Git Hooks to bezpłatna lekcja Git & GitHub Professional Workflow na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Git & GitHub Professional Workflow, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Git & GitHub Professional Workflow zawiera 4 lekcji w sumie.
Czym są hooki Git?
Witamy w świecie hooków Git! Hooki Git to potężne, konfigurowalne skrypty, które Git wykonuje automatycznie przed zdarzeniami takimi jak commitowanie, wypychanie lub odbieranie wypchniętych commitów albo po tych zdarzeniach.
Można myśleć o nich jak o automatycznych punktach kontrolnych lub działaniach w procesie pracy z Gitem. Pomagają egzekwować standardy projektu, automatyzować zadania i integrować się z innymi systemami.
Gdzie znajdują się hooki
Każde repozytorium Git zawiera katalog .git/hooks. W środku znajdują się przykładowe skrypty hooków (zwykle kończące się rozszerzeniem .sample).
Aby aktywować hook, wystarczy usunąć rozszerzenie .sample i nadać plikowi uprawnienia do wykonywania. Git będzie go wtedy uruchamiać w odpowiednim momencie.
- Lokalizacja:
.git/hooks/ - Pliki: skrypty powłoki (Bash, Python, Ruby itd.)
- Aktywacja: zmiana nazwy i nadanie uprawnień do wykonywania
Po stronie klienta a po stronie serwera
Hooki Git dzielą się na dwa główne typy zależnie od miejsca wykonywania:
- Hooki po stronie klienta: uruchamiają się na lokalnym komputerze (np. przed wykonaniem commita lub rebase). Służą do automatyzacji osobistego procesu pracy i egzekwowania lokalnych zasad.
- Hooki po stronie serwera: uruchamiają się na zdalnym serwerze Git (np. podczas wypychania kodu do współdzielonego repozytorium). Egzekwują zasady obowiązujące w całym projekcie.
Hook po stronie klienta: pre-commit
Hook pre-commit jest jednym z najczęściej używanych hooków po stronie klienta. Uruchamia się *przed* oficjalnym utworzeniem commita przez Git.
Jeśli skrypt pre-commit zakończy działanie ze statusem różnym od zera, Git anuluje commit. Doskonale nadaje się to do zadań takich jak:
- lintowanie kodu (sprawdzanie błędów stylu)
- uruchamianie testów jednostkowych
- sprawdzanie obecności dużych plików lub poufnych danych
Hook po stronie klienta: commit-msg
Hook commit-msg uruchamia się *po* wprowadzeniu komunikatu commita, ale *przed* jego finalizacją.
Hook ten pomaga zagwarantować, że komunikaty commitów są zgodne z określonymi konwencjami lub formatami. Może na przykład sprawdzać, czy:
- komunikat zaczyna się od identyfikatora zadania (np.
[JIRA-123]) - długość komunikatu mieści się w określonych limitach
- zawiera określone słowa kluczowe lub ich nie zawiera
Hook po stronie klienta: post-commit
Hook post-commit uruchamia się *natychmiast po* pomyślnym utworzeniu commita.
W przeciwieństwie do pre-commit i commit-msg hook ten nie może zmienić rezultatu commita. Często służy do wysyłania powiadomień lub integracji, na przykład do:
- powiadamiania członków zespołu
- aktualizowania narzędzia do zarządzania projektem
- uruchamiania kompilacji w ramach ciągłej integracji (CI), choć częściej wykorzystuje się do tego hooki po stronie serwera
Hook serwera: pre-receive
Przechodząc do hooków po stronie serwera, pre-receive jest wykonywany *przed* zaktualizowaniem jakichkolwiek referencji (takich jak gałęzie lub tagi) w zdalnym repozytorium.
Ten hook pozwala skutecznie egzekwować najważniejsze zasady repozytorium, takie jak:
- Zapobieganie bezpośredniemu wypychaniu zmian do gałęzi
main - Wymaganie podpisywania wszystkich commitów
- Weryfikowanie tożsamości autora commita
Jeśli ten hook zakończy działanie z niezerowym kodem wyjścia, cała operacja push zostanie odrzucona.
Hook serwera: post-receive
Hook post-receive jest uruchamiany *po* pomyślnym zaktualizowaniu referencji w zdalnym repozytorium przez operację push.
Podobnie jak post-commit, ten hook nie może odrzucić operacji push. Jest on często używany do:
- Uruchamiania potoków CI/CD
- Aktualizowania zewnętrznych systemów śledzenia zgłoszeń
- Wysyłania powiadomień e-mail do zespołu
- Wdrażania kodu w środowisku testowym
Tworzenie prostego hooka
Aby utworzyć hook, wystarczy utworzyć plik o nazwie hooka (np. pre-commit) w katalogu .git/hooks/. Utwórzmy bardzo prosty hook:
#!/bin/sh
# This pre-commit hook will always succeed
echo "Running pre-commit hook..."
exit 0Nadawanie hookom uprawnień do wykonywania
Po utworzeniu skryptu hooka trzeba nadać mu uprawnienia do wykonywania. W przeciwnym razie Git go nie uruchomi. Użyj w terminalu polecenia chmod:
chmod +x .git/hooks/pre-commit
Od tej pory za każdym razem, gdy spróbujesz wykonać commit, Git uruchomi ten skrypt!
Szybkie sprawdzenie: moment uruchamiania hooków
Hooki Git są uruchamiane w określonych momentach przepływu pracy. Zrozumienie tego harmonogramu jest kluczowe, aby skutecznie z nich korzystać.
Podsumowanie: zrozumienie hooków Git
Właśnie stawiasz pierwszy krok w potężnym świecie hooków Git!
- Hooki Git to skrypty automatyzujące działania podczas zdarzeń w Git.
- Znajdują się w katalogu
.git/hooks/repozytorium. - Hooki dzielą się na klientowe (uruchamiane na komputerze lokalnym) i serwerowe (uruchamiane w zdalnym repozytorium).
- Najważniejsze hooki, takie jak
pre-commitipre-receive, mogą egzekwować zasady, blokując operacje. - Hooki takie jak
post-commitipost-receivesłużą do wysyłania powiadomień lub integracji po wykonaniu operacji.
W następnej części zajmiemy się praktycznymi przykładami implementacji konkretnych hooków!
Często zadawane pytania
Czy lekcja „Poznajemy Git Hooks” jest bezpłatna?
Tak — pełny tekst „Poznajemy Git Hooks” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Git & GitHub Professional Workflow, przejdź na CoddyKit PRO. Kurs Git & GitHub Professional Workflow zawiera 4 lekcji w sumie.
Co nauczysz się w „Poznajemy Git Hooks”?
Poznaj różne typy Git hooks i momenty ich wykonywania w przepływie pracy Git. Ćwiczysz Git & GitHub Professional Workflow z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Git & GitHub Professional Workflow?
Nie wymagamy żadnego doświadczenia. Git & GitHub Professional Workflow w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Poznajemy Git Hooks”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Git & GitHub Professional Workflow?
Tak. Każda lekcja Git & GitHub Professional Workflow zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Poznajemy Git Hooks
- Hooki pre-commit i post-merge
- Dostosowywanie konfiguracji Git
- Udostępnianie hooków za pomocą Husky