Git videregående: Monorepo, Submodules og arbeidsflyter · leksjon

Git-hooks på klientsiden

Forstå og implementer hooks på klientsiden, som `pre-commit` og `post-merge`, for å håndheve standarder lokalt.

Leksjon 1 av 411 trinn

Git-hooks på klientsiden er en gratis leksjon i Git videregående: Monorepo, Submodules og arbeidsflyter på CoddyKit. Dette er leksjon 1 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 Git videregående: Monorepo, Submodules og arbeidsflyter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.

Introduksjon til Git Hooks

Velkommen! I denne leksjonen lærer De om Git hooks. Dette er skript som Git kjører automatisk før eller etter hendelser som commit, merge eller push.

Tenk på dem som automatiserte assistenter i Git-arbeidsflyten Deres. De bidrar til å håndheve prosjektstandarder og automatisere rutineoppgaver.

Klient- kontra serverside

Git hooks finnes i to varianter:

  • Klientside-hooks: Kjøres på den lokale maskinen Deres. De påvirker bare det personlige repositoriet Deres. Eksempler er `pre-commit` og `post-merge`.
  • Serverside-hooks: Kjøres på Git-serveren. De påvirker alle push-er til repositoriet. Vi tar for oss disse i en senere leksjon.

Denne leksjonen fokuserer på klientside-hooks og hvordan De bruker dem lokalt.

Hvor hooks lagres

Alle Git hooks lagres i katalogen .git/hooks i repositoriet Deres. Når De initialiserer et nytt Git-repositorium, fyller Git denne katalogen med eksempelskript for hooks.

La oss se inn i en typisk .git/hooks-mappe:

ls -F .git/hooks/

Aktivere en hook

Som standard slutter eksempelskriptene for hooks med .sample, noe som gjør dem inaktive. For å aktivere en hook må De:

  1. Fjerne utvidelsen .sample fra filnavnet.
  2. Gjøre skriptet kjørbart.

La oss aktivere hooken pre-commit ved å gi den nytt navn og gjøre den kjørbar:

cd .git/hooks
mv pre-commit.sample pre-commit
chmod +x pre-commit

`pre-commit`: Den lokale vakten Deres

Hooken pre-commit er en av de mest nyttige klientside-hookene. Den kjører rett før Git ber Dem om en commit-melding, og før selve commiten opprettes.

Hvis skriptet avsluttes med en status som ikke er null, avbryter Git commiten. Dette gjør den perfekt til:

  • Å kjøre lint-verktøy (for eksempel ESLint og Flake8)
  • Å kjøre enhetstester
  • Å se etter vanlige feil (for eksempel debug-setninger)

Eksempel: `pre-commit` for linting

Her er et enkelt pre-commit-skript som sjekker om staggete filer inneholder ordet "TODO". Hvis det finner "TODO", blokkeres commiten.

De kan redigere filen .git/hooks/pre-commit direkte for å legge til dette innholdet:

#!/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
fi

Teste hooken `pre-commit`

La oss nå prøve å committe en fil som inneholder "TODO". Hooken pre-commit skal hindre commiten.

Opprett først en fil med "TODO", og prøv deretter å committe 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`: Etter merge

Hooken post-merge kjører umiddelbart etter en vellykket git merge eller git pull (som i praksis er en fetch etterfulgt av en merge eller rebase).

Den er nyttig for å automatisere oppgaver som bør utføres etter at arbeidsmappen er oppdatert av en merge, for eksempel:

  • Installere nye avhengigheter
  • Bygge prosjektet på nytt
  • Oppdatere dokumentasjon eller symbolske lenker

Eksempel: `post-merge` for avhengigheter

Forestill Dem at De arbeider med et Node.js-prosjekt. Etter å ha merget en gren som introduserte nye avhengigheter (oppdaterte package.json), vil De kjøre npm install.

Her er et post-merge-skript som sjekker om package.json ble endret av mergingen, og kjører npm install hvis den ble det:

#!/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)"
fi

Hook-utfordring

De har lært om klientside-hooks i Git! Hvilke av følgende påstander om dem er SANNE?

Klientside-hooks: Oppsummering

Godt jobbet! De har nå utforsket klientside-hooks i Git. Dette har vi gått gjennom:

  • Hva de er: Skript som kjører automatisk ved bestemte Git-hendelser.
  • Hvor de lagres: I katalogen .git/hooks.
  • Hvordan de aktiveres: Gi dem nytt navn ved å fjerne .sample, og gjør dem kjørbare.
  • `pre-commit`: Kjører før en commit og er nyttig for validering og linting.
  • `post-merge`: Kjører etter en merge og er nyttig for oppdatering av avhengigheter eller ny bygging.

Klientside-hooks er kraftige verktøy for automatisering av personlig arbeidsflyt og lokale kvalitetssjekker!

Gratis å komme i gang

Lær deg Git videregående: Monorepo, Submodules og arbeidsflyter 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 «Git-hooks på klientsiden» gratis?

Ja – hele teksten i «Git-hooks på klientsiden» 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 Git videregående: Monorepo, Submodules og arbeidsflyter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.

Hva lærer jeg i «Git-hooks på klientsiden»?

Forstå og implementer hooks på klientsiden, som `pre-commit` og `post-merge`, for å håndheve standarder lokalt. Du øver på Git videregående: Monorepo, Submodules og arbeidsflyter 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 Git videregående: Monorepo, Submodules og arbeidsflyter?

Ingen tidligere erfaring er nødvendig. Git videregående: Monorepo, Submodules og arbeidsflyter 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 1 av 4.

Hvor lang tid tar leksjonen «Git-hooks på klientsiden»?

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 Git videregående: Monorepo, Submodules og arbeidsflyter-leksjonen?

Ja. Alle Git videregående: Monorepo, Submodules og arbeidsflyter-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

  1. Git-hooks på klientsiden
  2. Git-hooks på serversiden
  3. Git-konfigurasjon og aliaser
  4. Dele hooks med teamet ved hjelp av Husky
← Tilbake til Git videregående: Monorepo, Submodules og arbeidsflyter