Professionelt Git- og GitHub-arbejdsforløb · Lektion

Pre-commit- og post-merge-hooks

Implementer praktiske eksempler på pre-commit-hooks til linting og post-merge-hooks til notifikationer.

Lektion 2 af 412 trin

Pre-commit- og post-merge-hooks er en gratis Professionelt Git- og GitHub-arbejdsforløb-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Professionelt Git- og GitHub-arbejdsforløb, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Professionelt Git- og GitHub-arbejdsforløb-kurset indeholder 4 lektioner i alt.

Introduktion til praktiske Git-hooks

I den forrige lektion lærte du om Git-hooks og deres forskellige typer. Nu skal vi arbejde praktisk!

Vi dykker ned i implementeringen af to effektive hooks: pre-commit og post-merge. De giver dig mulighed for at automatisere tjek før et commit og handlinger efter en merge.

Pre-commit: Din kvalitetsport

Hooken pre-commit køres før en commit-handling, men efter at du har brugt git add til at klargøre dine ændringer.

  • Den er perfekt til at håndhæve kodekvalitet og kodestil.
  • Du kan bruge den til at køre linters, stilkontroller eller endda grundlæggende enhedstests.
  • Hvis scriptet afsluttes med en status, der ikke er nul, afbrydes commit-handlingen automatisk.

Det sikrer, at kun kode af høj kvalitet, der overholder kravene, kommer ind i dit lager.

Konfigurer en pre-commit-hook

For at oprette en pre-commit-hook skal du oprette en eksekverbar fil med navnet pre-commit i projektets mappe .git/hooks/.

Git leverer eksempelhooks med filendelsen .sample. Fjern denne filendelse, og tilføj dit eget script.

Husk at gøre filen eksekverbar med: chmod +x .git/hooks/pre-commit

Eksempel: Forhindr commits med 'TODO'

Lad os oprette en simpel pre-commit-hook, der forhindrer dig i at lave commits af filer, som stadig indeholder ordet "TODO". Det er en almindelig praksis for at sikre, at ingen ufærdige opgaver kommer med i din kodebase.

Scriptet kontrollerer alle klargjorte filer for dette nøgleord. Hvis det findes, stopper scriptet commit-handlingen.

Pre-commit-hook: Ingen TODO'er!

Her er et simpelt shell-script til din fil .git/hooks/pre-commit. Det kontrollerer klargjorte .txt-filer for ordet "TODO".

Trin:

  1. Opret .git/hooks/pre-commit
  2. Indsæt denne kode
  3. Kø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 0

Test din pre-commit-hook

For at teste denne hook skal du først oprette en fil (f.eks. test.txt) og tilføje "TODO: Finish this" til den. Prøv derefter at lave et commit:

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

Commit-handlingen bør blive afbrudt, og du får vist fejlmeddelelsen fra din hook. Fjern "TODO" fra test.txt, så lykkes commit-handlingen!

Post-merge: Automatiser efter merges

Hooken post-merge køres automatisk, efter at kommandoen git merge er gennemført uden fejl.

  • Den er nyttig til integrationsopgaver, der skal udføres, efter at kode er blevet samlet.
  • Eksempler er at underrette teammedlemmer, opdatere projektets afhængigheder (f.eks. npm install) eller køre et build-script.
  • I modsætning til pre-commit påvirker denne hook ikke resultatet af mergingen.

Det er en god måde at automatisere processer efter en merge på.

Konfigurer en post-merge-hook

Ligesom med pre-commit opretter du en fil med navnet post-merge i mappen .git/hooks/.

Sørg igen for, at den er eksekverbar:

chmod +x .git/hooks/post-merge

Dette script køres derefter, hver gang en merge gennemføres i dit lager.

Eksempel: Besked ved fuldført merge

Lad os oprette en post-merge-hook, der blot skriver en besked i konsollen for at bekræfte, at der netop er gennemført en merge. I en virkelig situation kunne den udløse en CI/CD-pipeline eller sende en notifikation til en chatapplikation.

Post-merge-hook: Notifikation

Her er et simpelt shell-script til din fil .git/hooks/post-merge. Det skriver en bekræftelsesbesked.

Trin:

  1. Opret .git/hooks/post-merge
  2. Indsæt denne kode
  3. Kø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 0

Hook-tjek: Pre-commit kontra post-merge

Hvilken af følgende opgaver vil typisk blive håndteret af en pre-commit-hook?

Opsummering: Hooks i praksis

Godt klaret! I denne lektion har du lært at implementere praktiske Git-hooks.

  • Pre-commit-hooks fungerer som en kvalitetsport og kører tjek som linting eller test *før* et commit.
  • Post-merge-hooks automatiserer handlinger *efter* en merge, f.eks. notifikationer eller opdateringer af afhængigheder.

Disse hooks er effektive værktøjer til at håndhæve standarder og automatisere arbejdsgange i dit Git-lager. Fortsæt med at udforske andre hook-typer for at tilpasse din Git-oplevelse yderligere!

Gratis at komme i gang

Lær Professionelt Git- og GitHub-arbejdsforløb med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Pre-commit- og post-merge-hooks” gratis?

Ja — hele teksten til “Pre-commit- og post-merge-hooks” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Professionelt Git- og GitHub-arbejdsforløb-kurset, skal du opgradere til CoddyKit PRO. Professionelt Git- og GitHub-arbejdsforløb-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Pre-commit- og post-merge-hooks”?

Implementer praktiske eksempler på pre-commit-hooks til linting og post-merge-hooks til notifikationer. Du øver dig i Professionelt Git- og GitHub-arbejdsforløb med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Professionelt Git- og GitHub-arbejdsforløb?

Der kræves ingen tidligere erfaring. Professionelt Git- og GitHub-arbejdsforløb på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Pre-commit- og post-merge-hooks”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Professionelt Git- og GitHub-arbejdsforløb-lektion?

Ja. Alle Professionelt Git- og GitHub-arbejdsforløb-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Forstå Git-hooks
  2. Pre-commit- og post-merge-hooks
  3. Tilpasning af Git-konfiguration
  4. Del hooks med Husky
← Tilbage til Professionelt Git- og GitHub-arbejdsforløb