Pre-commit- og post-merge-hooks
Implementer praktiske eksempler på pre-commit-hooks for linting og post-merge-hooks for varslinger.
Pre-commit- og post-merge-hooks er en gratis leksjon i Profesjonell arbeidsflyt med Git og GitHub på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Profesjonell arbeidsflyt med Git og GitHub, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Profesjonell arbeidsflyt med Git og GitHub inneholder totalt 4 leksjoner.
Introduksjon til praktiske Git-hooker
I forrige leksjon lærte vi om Git-hooker og de ulike typene. Nå skal vi gå over til praksis!
Vi skal se nærmere på hvordan du implementerer to kraftige hooker: pre-commit og post-merge. De lar deg automatisere kontroller før en commit og handlinger etter en merge.
Pre-commit: Kvalitetssperren din
Hooken pre-commit kjører før en commit-operasjon, men etter at du har brukt git add til å klargjøre endringene dine.
- Den egner seg perfekt til å håndheve kodekvalitet og kodestil.
- Du kan bruke den til å kjøre lint-verktøy, stilkontroller eller til og med enkle enhetstester.
- Hvis skriptet avsluttes med en status ulik null, avbrytes commiten automatisk.
Dette sikrer at bare kode av høy kvalitet som følger reglene, legges inn i repositoriet.
Konfigurere en pre-commit-hook
For å opprette en pre-commit-hook må du lage en kjørbar fil med navnet pre-commit i prosjektets katalog .git/hooks/.
Git leverer eksempelhooker med filendelsen .sample. Fjern denne filendelsen og legg til ditt eget skript.
Husk å gjøre filen kjørbar med: chmod +x .git/hooks/pre-commit
Eksempel: Hindre commits med «TODO»
La oss opprette en enkel pre-commit-hook som hindrer deg i å opprette commits av filer som fortsatt inneholder ordet "TODO". Dette er en vanlig praksis for å sikre at uferdige oppgaver ikke blir liggende igjen i kodebasen.
Skriptet kontrollerer alle klargjorte filer for dette nøkkelordet. Hvis det blir funnet, stopper det commiten.
Pre-commit-hook: Ingen TODO-er!
Her er et enkelt shell-skript for filen .git/hooks/pre-commit. Det kontrollerer klargjorte .txt-filer for ordet "TODO".
Fremgangsmåte:
- Opprett
.git/hooks/pre-commit - Lim inn denne koden
- Kjør
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 0Teste pre-commit-hooken
For å teste denne hooken oppretter du først en fil (for eksempel test.txt) og legger til "TODO: Finish this" i den. Prøv deretter å opprette en commit av den:
git add test.txtgit commit -m "Add test file"
Commiten skal avbrytes, og du vil se feilmeldingen fra hooken. Fjern "TODO" fra test.txt, så vil commit-operasjonen lykkes!
Post-merge: Automatisere etter merge
Hooken post-merge kjører automatisk etter at en git merge-kommando er fullført.
- Den er nyttig for integrasjonsoppgaver som skal utføres etter at kode er slått sammen.
- Eksempler er å varsle teammedlemmer, oppdatere prosjektavhengigheter (for eksempel
npm install) eller kjøre et byggeskript. - I motsetning til pre-commit påvirker ikke denne hooken resultatet av merge-operasjonen.
Det er en flott måte å automatisere prosesser etter en merge på.
Konfigurere en post-merge-hook
I likhet med pre-commit oppretter du en fil med navnet post-merge i katalogen .git/hooks/.
Sørg igjen for at den er kjørbar:
chmod +x .git/hooks/post-merge
Dette skriptet kjører deretter hver gang en merge-operasjon fullføres i repositoriet ditt.
Eksempel: Varsel når merge er fullført
La oss opprette en post-merge-hook som ganske enkelt skriver ut en melding i konsollen for å bekrefte at en merge nettopp har funnet sted. I en virkelig situasjon kunne den ha utløst en CI/CD-pipeline eller sendt et varsel til en chatapplikasjon.
Post-merge-hook: Varsel
Her er et enkelt shell-skript for filen .git/hooks/post-merge. Det skriver ut en bekreftelsesmelding.
Fremgangsmåte:
- Opprett
.git/hooks/post-merge - Lim inn denne koden
- Kjør
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 0Hook-sjekk: Pre-commit kontra post-merge
Hvilken av følgende oppgaver håndteres vanligvis av en pre-commit-hook?
Oppsummering: Hooker i praksis
Godt jobbet! I denne leksjonen har du lært å implementere praktiske Git-hooker.
- Pre-commit-hooker fungerer som en kvalitetssperre og kjører kontroller som linting eller testing *før* en commit.
- Post-merge-hooker automatiserer handlinger *etter* en merge, for eksempel varsler eller oppdatering av avhengigheter.
Disse hookene er kraftige verktøy for å håndheve standarder og automatisere arbeidsflyter i Git-repositoriet ditt. Fortsett å utforske andre hook-typer for å tilpasse Git-opplevelsen din ytterligere!
Lær deg Profesjonell arbeidsflyt med Git og GitHub med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Pre-commit- og post-merge-hooks» gratis?
Ja – hele teksten i «Pre-commit- og post-merge-hooks» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Profesjonell arbeidsflyt med Git og GitHub-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Profesjonell arbeidsflyt med Git og GitHub inneholder totalt 4 leksjoner.
Hva lærer jeg i «Pre-commit- og post-merge-hooks»?
Implementer praktiske eksempler på pre-commit-hooks for linting og post-merge-hooks for varslinger. Du øver på Profesjonell arbeidsflyt med Git og GitHub med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Profesjonell arbeidsflyt med Git og GitHub?
Ingen tidligere erfaring er nødvendig. Profesjonell arbeidsflyt med Git og GitHub på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Pre-commit- og post-merge-hooks»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Profesjonell arbeidsflyt med Git og GitHub-leksjonen?
Ja. Alle Profesjonell arbeidsflyt med Git og GitHub-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Forstå Git hooks
- Pre-commit- og post-merge-hooks
- Tilpasse Git-konfigurasjonen
- Dele hooks med Husky