Pre-commit- och post-merge-hooks
Implementera praktiska exempel på pre-commit-hooks för lintning och post-merge-hooks för aviseringar.
Pre-commit- och post-merge-hooks är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Introduktion till praktiska Git-hookar
I den föregående lektionen lärde ni er om Git-hookar och deras olika typer. Nu blir det praktiskt!
Vi ska gå igenom hur två kraftfulla hookar implementeras: pre-commit och post-merge. Med dem kan ni automatisera kontroller före en commit och åtgärder efter en merge.
Pre-commit: Er kvalitetsgrind
Hooken pre-commit körs före en commit-åtgärd, men efter att ni har använt git add för att stage:a era ändringar.
- Den passar perfekt för att upprätthålla kodkvalitet och kodstil.
- Ni kan använda den för att köra linters, stilkontroller eller till och med grundläggande enhetstester.
- Om skriptet avslutas med en status som inte är noll avbryts committen automatiskt.
På så sätt säkerställs att endast kod av hög kvalitet som följer reglerna läggs in i ert arkiv.
Konfigurera en pre-commit-hook
För att skapa en pre-commit-hook behöver ni skapa en körbar fil med namnet pre-commit i projektets katalog .git/hooks/.
Git tillhandahåller exempel på hookar med tillägget .sample. Ta bort tillägget och lägg till ert eget skript.
Kom ihåg att göra filen körbar med: chmod +x .git/hooks/pre-commit
Exempel: Förhindra commits med 'TODO'
Låt oss skapa en enkel pre-commit-hook som hindrar er från att committa filer som fortfarande innehåller ordet "TODO". Det är vanligt att göra så för att säkerställa att inga ofärdiga uppgifter råkar följa med in i kodbasen.
Skriptet kontrollerar alla stage:ade filer efter det här nyckelordet. Om det hittas stoppas committen.
Pre-commit-hook: Inga TODO-kommentarer!
Här är ett enkelt shellskript för filen .git/hooks/pre-commit. Det kontrollerar stage:ade .txt-filer efter ordet "TODO".
Steg:
- Skapa
.git/hooks/pre-commit - Klistra in den här koden
- 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 0Testa er pre-commit-hook
För att testa den här hooken skapar ni först en fil (till exempel test.txt) och lägger till "TODO: Finish this" i den. Försök sedan att committa den:
git add test.txtgit commit -m "Add test file"
Committen bör avbrytas, och ni får se felmeddelandet från er hook. Ta bort "TODO" från test.txt, så lyckas committen!
Post-merge: Automatisera efter merger
Hooken post-merge körs automatiskt efter att kommandot git merge har slutförts utan fel.
- Den är användbar för integreringsuppgifter som bör utföras efter att kod har slagits samman.
- Exempel är att avisera teammedlemmar, uppdatera projektberoenden (till exempel
npm install) eller köra ett byggskript. - Till skillnad från pre-commit påverkar den här hooken inte resultatet av mergingen.
Det är ett utmärkt sätt att automatisera processer efter en merge.
Konfigurera en post-merge-hook
Precis som med pre-commit skapar ni en fil med namnet post-merge i katalogen .git/hooks/.
Kontrollera återigen att den är körbar:
chmod +x .git/hooks/post-merge
Det här skriptet körs sedan varje gång en merge slutförs i ert arkiv.
Exempel: Avisering när en merge är klar
Låt oss skapa en post-merge-hook som helt enkelt skriver ut ett meddelande i konsolen för att bekräfta att en merge precis har genomförts. I ett verkligt scenario skulle den kunna starta en CI/CD-pipeline eller skicka en avisering till en chattapplikation.
Post-merge-hook: Avisering
Här är ett enkelt shellskript för filen .git/hooks/post-merge. Det skriver ut ett bekräftelsemeddelande.
Steg:
- Skapa
.git/hooks/post-merge - Klistra in den här koden
- 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 0Hookkontroll: Pre-commit kontra post-merge
Vilken av följande uppgifter skulle vanligtvis hanteras av en pre-commit-hook?
Sammanfattning: Hookar i praktiken
Bra jobbat! I den här lektionen har ni lärt er att implementera praktiska Git-hookar.
- Pre-commit-hookar fungerar som en kvalitetsgrind och kör kontroller som linting eller tester *före* en commit.
- Post-merge-hookar automatiserar åtgärder *efter* en merge, till exempel aviseringar eller uppdateringar av beroenden.
De här hookarna är kraftfulla verktyg för att upprätthålla standarder och automatisera arbetsflöden i ert Git-arkiv. Fortsätt utforska andra hooktyper för att anpassa er Git-upplevelse ytterligare!
Lär dig DevOps-bootcamp med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Pre-commit- och post-merge-hooks” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Pre-commit- och post-merge-hooks”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Pre-commit- och post-merge-hooks”?
Implementera praktiska exempel på pre-commit-hooks för lintning och post-merge-hooks för aviseringar. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Pre-commit- och post-merge-hooks”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Förstå Git Hooks
- Pre-commit- och post-merge-hooks
- Anpassa Git-konfigurationen
- Dela hooks med Husky