Pre-commit- og post-merge-hooks
Implementer praktiske eksempler på pre-commit-hooks til linting og post-merge-hooks til notifikationer.
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:
- Opret
.git/hooks/pre-commit - Indsæt denne kode
- 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 0Test 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.txtgit 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:
- Opret
.git/hooks/post-merge - Indsæt denne kode
- 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 0Hook-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!
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
- Forstå Git-hooks
- Pre-commit- og post-merge-hooks
- Tilpasning af Git-konfiguration
- Del hooks med Husky