Git & GitHub Professional Workflow · Lekcja

Hooki pre-commit i post-merge

Poznaj praktyczne przykłady hooków pre-commit do lintowania oraz hooków post-merge do wysyłania powiadomień.

Lekcja 2 z 412 kroki

Hooki pre-commit i post-merge to bezpłatna lekcja Git & GitHub Professional Workflow na CoddyKit. To lekcja 2 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.

Wprowadzenie do praktycznych zastosowań hooków Git

W poprzedniej lekcji poznali Państwo hooki Git i ich różne typy. Teraz przejdźmy do praktyki!

Zajmiemy się implementacją dwóch potężnych hooków: pre-commit i post-merge. Pozwalają one automatyzować kontrole przed commitem oraz działania po scaleniu.

Pre-commit: bramka jakości

Hook pre-commit jest uruchamiany przed wykonaniem operacji commit, ale po użyciu polecenia git add do umieszczenia zmian w przechowalni.

  • Doskonale nadaje się do egzekwowania jakości i stylu kodu.
  • Można za jego pomocą uruchamiać lintery, narzędzia sprawdzające styl, a nawet podstawowe testy jednostkowe.
  • Jeśli skrypt zakończy działanie z niezerowym kodem statusu, commit zostanie automatycznie przerwany.

Dzięki temu w repozytorium znajdzie się wyłącznie wysokiej jakości kod zgodny z wymaganiami.

Konfigurowanie hooka pre-commit

Aby utworzyć hook pre-commit, należy utworzyć wykonywalny plik o nazwie pre-commit w katalogu .git/hooks/ projektu.

Git udostępnia przykładowe hooki z rozszerzeniem .sample. Należy usunąć to rozszerzenie i dodać własny skrypt.

Należy pamiętać o nadaniu plikowi uprawnień do wykonywania za pomocą polecenia: chmod +x .git/hooks/pre-commit

Przykład: zapobieganie commitom zawierającym „TODO”

Utwórzmy prosty hook pre-commit, który uniemożliwi wykonanie commita plików zawierających jeszcze słowo „TODO”. To powszechna praktyka, która pomaga zapobiegać przedostawaniu się niedokończonych zadań do bazy kodu.

Skrypt sprawdzi to słowo kluczowe we wszystkich plikach umieszczonych w przechowalni. Jeśli je znajdzie, zatrzyma wykonywanie commita.

Hook pre-commit: żadnych TODO!

Oto prosty skrypt powłoki do pliku .git/hooks/pre-commit. Sprawdza on słowo „TODO” w umieszczonych w przechowalni plikach .txt.

Kroki:

  1. Utwórz .git/hooks/pre-commit
  2. Wklej ten kod
  3. Uruchom chmod +x .git/hooks/pre-commit
#!/bin/sh

# Check staged .txt files for "TODO"
for file in $(git diff --cached --name-only --diff-filter=ACM | grep '\.txt$'); do
  if grep -q "TODO" "$file"; then
    echo "ERROR: Found 'TODO' in staged file: $file"
    echo "Please remove TODOs before committing."
    exit 1
  fi
done

exit 0

Testowanie hooka pre-commit

Aby przetestować ten hook, najpierw utwórz plik (np. test.txt) i dodaj do niego tekst „TODO: Finish this”. Następnie spróbuj wykonać commit:

git add test.txt
git commit -m "Add test file"

Commit powinien zostać przerwany, a Państwo zobaczą komunikat o błędzie wygenerowany przez hook. Usuń „TODO” z pliku test.txt, a commit zakończy się powodzeniem!

Post-merge: automatyzacja działań po scaleniu

Hook post-merge jest automatycznie uruchamiany po pomyślnym zakończeniu polecenia git merge.

  • Jest przydatny do zadań integracyjnych, które powinny zostać wykonane po połączeniu kodu.
  • Przykłady obejmują powiadamianie członków zespołu, aktualizowanie zależności projektu (np. npm install) lub uruchamianie skryptu budowania.
  • W przeciwieństwie do pre-commit ten hook nie wpływa na wynik scalania.

To świetny sposób na automatyzację procesów wykonywanych po scaleniu.

Konfigurowanie hooka post-merge

Podobnie jak w przypadku pre-commit, należy utworzyć plik o nazwie post-merge w katalogu .git/hooks/.

Ponownie należy upewnić się, że jest to plik wykonywalny:

chmod +x .git/hooks/post-merge

Skrypt będzie odtąd uruchamiany po każdym zakończeniu scalania w repozytorium.

Przykład: powiadomienie o zakończeniu scalania

Utwórzmy hook post-merge, który po prostu wyświetli w konsoli komunikat potwierdzający wykonanie scalania. W rzeczywistym zastosowaniu może on uruchamiać potok CI/CD lub wysyłać powiadomienie do aplikacji czatu.

Hook post-merge: powiadomienie

Oto prosty skrypt powłoki do pliku .git/hooks/post-merge. Wyświetla on komunikat potwierdzający.

Kroki:

  1. Utwórz .git/hooks/post-merge
  2. Wklej ten kod
  3. Uruchom chmod +x .git/hooks/post-merge
#!/bin/sh

# This hook runs after a merge operation.
echo "--- Post-merge hook triggered ---"
echo "A merge has just completed in your repository."
echo "You might want to run 'npm install' or 'bundle install' now."
echo "---------------------------------"

exit 0

Sprawdzenie hooków: pre-commit a post-merge

Które z poniższych zadań jest zazwyczaj obsługiwane przez hook pre-commit?

Podsumowanie: hooki w działaniu

Świetnie! W tej lekcji nauczyli się Państwo implementować praktyczne hooki Git.

  • Hooki pre-commit pełnią funkcję bramki jakości, uruchamiając kontrole, takie jak lintowanie lub testy, *przed* wykonaniem commita.
  • Hooki post-merge automatyzują działania *po* scaleniu, takie jak wysyłanie powiadomień lub aktualizowanie zależności.

Te hooki są potężnymi narzędziami do egzekwowania standardów i automatyzowania przepływów pracy w repozytorium Git. Proszę poznawać kolejne typy hooków, aby jeszcze lepiej dostosować sposób pracy z Git!

Bezpłatny start

Ucz się Git & GitHub Professional Workflow dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
12
Lekcje
48

Często zadawane pytania

Czy lekcja „Hooki pre-commit i post-merge” jest bezpłatna?

Tak — pełny tekst „Hooki pre-commit i post-merge” 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 „Hooki pre-commit i post-merge”?

Poznaj praktyczne przykłady hooków pre-commit do lintowania oraz hooków post-merge do wysyłania powiadomień. Ć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 2 z 4.

Ile czasu zajmuje lekcja „Hooki pre-commit i post-merge”?

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

  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 Git & GitHub Professional Workflow