Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut · Oppitunti

Git-asiakaspuolen hookit

Ymmärrä ja toteuta asiakaspuolen hookeja, kuten `pre-commit` ja `post-merge`, standardien valvomiseksi paikallisesti.

Oppitunti 1/411 vaihetta

Git-asiakaspuolen hookit on ilmainen Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-kurssilla on yhteensä 4 oppituntia.

Git-hookien esittely

Tervetuloa! Tässä oppitunnissa opit Git-hookeista. Ne ovat skriptejä, jotka Git suorittaa automaattisesti ennen commitin tekemistä tai sen jälkeen sekä esimerkiksi mergauksen tai pushin yhteydessä.

Ajattele niitä Git-työnkulun automaattisina avustajina. Ne auttavat valvomaan projektin käytäntöjä ja automatisoimaan rutiinitehtäviä.

Asiakaspuolen ja palvelinpuolen hookit

Git-hookeja on kahdenlaisia:

  • Asiakaspuolen hookit: Suoritetaan paikallisella koneellasi. Ne vaikuttavat vain omaan repositorioosi. Esimerkkejä ovat `pre-commit` ja `post-merge`.
  • Palvelinpuolen hookit: Suoritetaan Git-palvelimella. Ne vaikuttavat kaikkiin repositorioon tehtäviin pusheihin. Käsittelemme niitä myöhemmässä oppitunnissa.

Tässä oppitunnissa keskitytään asiakaspuolen hookeihin ja niiden paikalliseen käyttöön.

Missä hookit sijaitsevat

Kaikki Git-hookit tallennetaan repositoriosi .git/hooks-hakemistoon. Kun alustat uuden Git-repositorion, Git täyttää tämän hakemiston esimerkkihookien skripteillä.

Katsotaan tyypillisen .git/hooks-kansion sisältöä:

ls -F .git/hooks/

Hookin aktivointi

Oletusarvoisesti esimerkkihookien skriptien päätteenä on .sample, joten ne eivät ole aktiivisia. Aktivoi hook seuraavasti:

  1. Poista tiedostonimestä .sample-pääte.
  2. Tee skriptistä suoritettava.

Aktivoidaan pre-commit-hook nimeämällä tiedosto uudelleen ja tekemällä siitä suoritettava:

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

`pre-commit`: paikallinen vartijasi

pre-commit-hook on yksi hyödyllisimmistä asiakaspuolen hookeista. Se suoritetaan juuri ennen kuin Git pyytää commit-viestiä ja ennen varsinaisen commitin luomista.

Jos skripti päättyy nollasta poikkeavaan tilakoodiin, Git keskeyttää commitin. Siksi se sopii erinomaisesti seuraaviin tehtäviin:

  • Lintterien suorittaminen (esim. ESLint, Flake8)
  • Yksikkötestien suorittaminen
  • Yleisten virheiden tarkistaminen (esim. debug-lausekkeet)

Esimerkki: `pre-commit` linttaukseen

Tässä on yksinkertainen pre-commit-skripti, joka tarkistaa, sisältääkö jokin staging-alueelle viedyistä tiedostoista sanan "TODO". Jos se löytää sanan "TODO", commit estetään.

Voit muokata tiedostoa .git/hooks/pre-commit suoraan ja lisätä tämän sisällön:

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

`pre-commit`-hookin testaaminen

Kokeillaan nyt commitoida tiedosto, joka sisältää tekstin "TODO". pre-commit-hookin pitäisi estää commit.

Luo ensin tiedosto, jossa on teksti "TODO", ja yritä sitten commitoida se:

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`: mergauksen jälkeen

post-merge-hook suoritetaan heti onnistuneen git merge- tai git pull-komennon jälkeen. git pull suorittaa käytännössä fetch-toiminnon ja sen jälkeen mergauksen tai rebasen.

Se sopii mergeauksen päivitettyä työhakemiston jälkeen suoritettavien tehtävien automatisointiin, esimerkiksi:

  • Uusien riippuvuuksien asentamiseen
  • Projektin uudelleenkoontiin
  • Dokumentaation tai symbolisten linkkien päivittämiseen

Esimerkki: `post-merge` riippuvuuksille

Oletetaan, että työskentelet Node.js-projektissa. Kun olet yhdistänyt haaran, joka toi uusia riippuvuuksia (päivitetyn package.json-tiedoston), haluat suorittaa komennon npm install.

Tässä on post-merge-skripti, joka tarkistaa, muuttuiko package.json mergauksen yhteydessä, ja suorittaa komennon npm install, jos muuttui:

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

Olet oppinut asiakaspuolen Git-hookeista! Mitkä seuraavista väittämistä pitävät paikkansa niiden kohdalla?

Asiakaspuolen hookit: kertaus

Hienoa työtä! Olet tutustunut asiakaspuolen Git-hookeihin. Tässä käsitellyt asiat:

  • Mitä ne ovat: Skriptejä, jotka suoritetaan automaattisesti tiettyjen Git-tapahtumien yhteydessä.
  • Missä ne sijaitsevat: .git/hooks-hakemistossa.
  • Miten ne aktivoidaan: Nimeämällä tiedosto ilman .sample-päätettä ja tekemällä skriptistä suoritettava.
  • `pre-commit`: Suoritetaan ennen committia, ja sitä voi käyttää tarkistuksiin ja linttaukseen.
  • `post-merge`: Suoritetaan mergauksen jälkeen, ja se sopii riippuvuuksien päivittämiseen tai uudelleenkoontiin.

Asiakaspuolen hookit ovat tehokkaita työkaluja henkilökohtaisen työnkulun automatisointiin ja paikallisiin laatutarkistuksiin!

Aloita maksutta

Opi Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Git-asiakaspuolen hookit” ilmainen?

Kyllä – oppitunnin ”Git-asiakaspuolen hookit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-kurssin, päivitä CoddyKit PROhon. Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Git-asiakaspuolen hookit”?

Ymmärrä ja toteuta asiakaspuolen hookeja, kuten `pre-commit` ja `post-merge`, standardien valvomiseksi paikallisesti. Harjoittelet Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Git-asiakaspuolen hookit”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunnilla?

Kyllä. Jokainen Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Git-asiakaspuolen hookit
  2. Git-palvelinpuolen hookit
  3. Gitin määritykset ja aliakset
  4. Hookien jakaminen tiimille Huskylla
← Takaisin: Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut