Git-hooks på klientsidan
Förstå och implementera hooks på klientsidan, som `pre-commit` och `post-merge`, för att upprätthålla standarder lokalt.
Git-hooks på klientsidan är en gratis lektion i Avancerad Git: monorepon, submoduler och arbetsflöden på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Avancerad Git: monorepon, submoduler och arbetsflöden, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Avancerad Git: monorepon, submoduler och arbetsflöden innehåller totalt 4 lektioner.
Introduktion till Git Hooks
Välkommen! I den här lektionen får du lära dig om Git-hookar. Det är skript som Git kör automatiskt före eller efter händelser som commit, merge eller push.
Se dem som automatiserade assistenter i ditt Git-arbetsflöde. De hjälper till att upprätthålla projektets standarder och automatisera rutinuppgifter.
Klient- kontra serverside
Git-hookar finns i två varianter:
- Klientsidiga hookar: Körs på din lokala dator. De påverkar bara ditt personliga repository. Exempel är `pre-commit` och `post-merge`.
- Serversidiga hookar: Körs på Git-servern. De påverkar alla pushar till repositoryt. Vi tar upp dessa i en senare lektion.
Den här lektionen fokuserar på klientsidiga hookar och hur du använder dem lokalt.
Var hookar finns
Alla Git-hookar lagras i katalogen .git/hooks i ditt repository. När du initierar ett nytt Git-repository fyller Git den här katalogen med exempel på hook-skript.
Vi tar en titt i en typisk mapp med namnet .git/hooks:
ls -F .git/hooks/Aktivera en hook
Som standard slutar exempelskripten för hookar med .sample, vilket gör dem inaktiva. Om du vill aktivera en hook behöver du:
- Ta bort filnamnstillägget
.sample. - Göra skriptet körbart.
Vi aktiverar hooken pre-commit genom att byta namn på den och göra den körbar:
cd .git/hooks
mv pre-commit.sample pre-commit
chmod +x pre-commit`pre-commit`: ditt lokala skydd
Hooken pre-commit är en av de mest användbara klientsidiga hookarna. Den körs precis innan Git ber dig om ett commit-meddelande och innan den faktiska commiten skapas.
Om skriptet avslutas med en status som inte är noll avbryter Git commiten. Det gör hooken perfekt för att:
- Köra linters (t.ex. ESLint, Flake8)
- Köra enhetstester
- Kontrollera vanliga misstag (t.ex. felsökningsutskrifter)
Exempel: `pre-commit` för lintning
Här är ett enkelt pre-commit-skript som kontrollerar om någon stagad fil innehåller ordet "TODO". Om det hittar "TODO" blockeras commiten.
Du kan redigera filen .git/hooks/pre-commit direkt och lägga till detta innehåll:
#!/bin/sh
# Check for 'TODO' in staged changes
if git diff --cached | grep -q "TODO"; then
echo "Error: 'TODO' found in staged changes. Please resolve before committing."
exit 1
fiTesta hooken `pre-commit`
Nu testar vi att committa en fil som innehåller "TODO". Hooken pre-commit bör förhindra commiten.
Skapa först en fil med "TODO" och försök sedan att committa den:
echo "This is a file with a TODO item." > my_feature.txt
git add my_feature.txt
git commit -m "Attempt to commit with TODO"`post-merge`: efter en merge
Hooken post-merge körs direkt efter en lyckad git merge eller git pull (vilket i praktiken är en fetch följd av en merge eller rebase).
Den är användbar för att automatisera uppgifter som bör utföras efter att arbetskatalogen har uppdaterats av en merge, till exempel:
- Installera nya beroenden
- Bygga om projektet
- Uppdatera dokumentation eller symboliska länkar
Exempel: `post-merge` för beroenden
Föreställ dig att du arbetar med ett Node.js-projekt. När du har mergat en gren som introducerade nya beroenden (uppdaterade package.json) vill du köra npm install.
Här är ett post-merge-skript som kontrollerar om package.json ändrades av mergen och kör npm install om så är fallet:
#!/bin/sh
# Run npm install if package.json changed
if git diff --name-only HEAD@{1} HEAD | grep -q "package.json"; then
echo "package.json changed, running npm install..."
# npm install # Uncomment in a real project
echo "(npm install simulated)"
fiHook-utmaning
Du har lärt dig om klientsidiga Git-hookar! Vilka av följande påståenden om dem är SANNA?
Klientsidiga hookar: sammanfattning
Bra jobbat! Du har nu gått igenom klientsidiga Git-hookar. Här är vad vi tog upp:
- Vad de är: Skript som körs automatiskt vid specifika Git-händelser.
- Var de finns: I katalogen
.git/hooks. - Så aktiverar du dem: Ta bort
.samplefrån namnet och gör skriptet körbart. - `pre-commit`: Körs före en commit och är användbar för validering och lintning.
- `post-merge`: Körs efter en merge och passar bra för uppdatering av beroenden eller ombyggnad.
Klientsidiga hookar är kraftfulla verktyg för automatisering av ditt personliga arbetsflöde och lokala kvalitetskontroller!
Lär dig Avancerad Git: monorepon, submoduler och arbetsflöden 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
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Git-hooks på klientsidan” gratis?
Ja – hela texten till ”Git-hooks på klientsidan” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Avancerad Git: monorepon, submoduler och arbetsflöden, kan Ni uppgradera till CoddyKit PRO. Kursen i Avancerad Git: monorepon, submoduler och arbetsflöden innehåller totalt 4 lektioner.
Vad lär jag mig i ”Git-hooks på klientsidan”?
Förstå och implementera hooks på klientsidan, som `pre-commit` och `post-merge`, för att upprätthålla standarder lokalt. Ni övar på Avancerad Git: monorepon, submoduler och arbetsflöden 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 Avancerad Git: monorepon, submoduler och arbetsflöden?
Du behöver inga förkunskaper. Utbildningen i Avancerad Git: monorepon, submoduler och arbetsflöden 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 1 av 4.
Hur lång tid tar lektionen ”Git-hooks på klientsidan”?
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 Avancerad Git: monorepon, submoduler och arbetsflöden-lektionen?
Ja. Varje Avancerad Git: monorepon, submoduler och arbetsflöden-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
- Git-hooks på klientsidan
- Git-hooks på serversidan
- Git-konfiguration och alias
- Dela hooks med teamet med Husky