0Pricing
DevOps Bootcamp · Lekcja

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 DevOps Bootcamp 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 DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp 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 0

Nadawanie 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-commit i pre-receive, mogą egzekwować zasady, blokując operacje.
  • Hooki takie jak post-commit i post-receive sł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 DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp 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 DevOps Bootcamp 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ąć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp 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 DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp 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

  1. Poznajemy Git Hooks
  2. Hooki pre-commit i post-merge
  3. Dostosowywanie konfiguracji Git
  4. Udostępnianie hooków za pomocą Husky
← Powrót do DevOps Bootcamp