Git-asiakaspuolen hookit
Ymmärrä ja toteuta asiakaspuolen hookeja, kuten `pre-commit` ja `post-merge`, standardien valvomiseksi paikallisesti.
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:
- Poista tiedostonimestä
.sample-pääte. - 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)"
fiHook-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!
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
- Git-asiakaspuolen hookit
- Git-palvelinpuolen hookit
- Gitin määritykset ja aliakset
- Hookien jakaminen tiimille Huskylla