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

Virheenkorjaus Git Bisectillä

Käyttäkää `git bisect` -komentoa paikantaaksenne tehokkaasti täsmällisen commitin, joka toi virheen koodiin, ja säästääksenne arvokasta virheenkorjausaikaa.

Oppitunti 2/411 vaihetta

Virheenkorjaus Git Bisectillä on ilmainen Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.

Mikä Git Bisect on?

Kuvittele, että projektissasi ilmenee virhe, mutta et ole varma, mikä viimeaikainen muutos aiheutti sen. Jokaisen commitin tarkistaminen manuaalisesti voi viedä valtavasti aikaa!

git bisect on tehokas Git-komento, joka käyttää binäärihakualgoritmia löytääkseen nopeasti täsmälleen sen commitin, joka toi virheen koodiin.

Binäärihaun etu

Miksi git bisect toimii niin nopeasti? Se muistuttaa ”kuuma vai kylmä” -peliä commit-historiasi kanssa.

  • Kerro Gitille commit, jonka tiedät olevan huono (siinä on virhe).
  • Kerro Gitille commit, jonka tiedät olevan hyvä (se on ajalta ennen virheen ilmenemistä).
  • Git valitsee suunnilleen keskellä olevan commitin ja pyytää sinua testaamaan sen.
  • Palautteesi perusteella se puolittaa hakualueen ja jatkaa, kunnes syyllinen löytyy.

Bisect-haun aloittaminen

Aluksi sinun on kerrottava Gitille, että aloitat bisect-istunnon. Merkitse sitten tunnettu ”huono” (virheellinen) commit ja tunnettu ”hyvä” (toimiva) commit.

Voit käyttää commit-hajautusarvoja, haarojen nimiä tai tägejä.

git bisect start
git bisect bad HEAD
git bisect good <known_good_commit_hash>

Iteratiivinen prosessi: testaa ja merkitse

Kun olet määrittänyt hyvät ja huonot commitit, Git ottaa automaattisesti käyttöön commitin tämän alueen keskeltä. Sinun tehtäväsi on testata koodi tässä commitissa.

  • Jos virhe esiintyy, merkitse commit huonoksi.
  • Jos virhettä EI esiinny, merkitse commit hyväksi.

Git siirtyy sitten seuraavaan commitiin ja puolittaa jäljellä olevan hakualueen.

Commitin merkitseminen

Kun olet testannut parhaillaan käytössä olevan commitin, kerro Gitille seuraavilla komennoilla, onko se hyvä vai huono:

  • Nykyisen commitin merkitseminen huonoksi: git bisect bad
  • Nykyisen commitin merkitseminen hyväksi: git bisect good

Git ottaa sitten automaattisesti käyttöön seuraavan testattavan commitin.

git bisect bad
# OR
git bisect good

Ongelman rajaaminen

Toistat ”testaa ja merkitse” -prosessin. Jokaisella askeleella git bisect lähestyy yksittäistä committia, joka toi virheen koodiin. Tämä on paljon nopeampaa kuin commitien tarkistaminen yksi kerrallaan!

100 commitin alueella tarvitaan enintään 7 testiä (log2(100) ≈ 6.64).

Syyllinen löytyi!

Lopulta git bisect rajaa alueen yhteen committiin. Se ilmoittaa ensimmäisen löytämänsä ”huonon” commitin, joka toi virheen koodiin!

Kun olet löytänyt virheen, bisect-istunto on tärkeää lopettaa, jotta varasto palaa alkuperäiseen tilaansa (yleensä siihen haaraan, jossa olit istunnon aloittaessasi).

git bisect reset

Testaamiskelvottomien commitien käsittely

Joskus git bisect voi päätyä commitiin, jota ei voi testata (esimerkiksi se ei käänny tai sen riippuvuudet ovat rikki). Tällöin voit pyytää Gitiä ohittamaan sen:

git bisect skip

Git valitsee sitten toisen testattavan commitin ja jättää ohitetun commitin pois virheen mahdollisesta alueesta.

git bisect skip

Automatisointi komennolla Git Bisect Run

Vielä nopeampaa vianmääritystä varten voit automatisoida testausprosessin komennolla git bisect run. Tämä komento ottaa vastaan testin suorittavan komentosarjan ja palauttaa tiettyjä koodeja:

  • 0: Commit on hyvä.
  • 1-127 (paitsi 125): Commit on huono.
  • 125: Commit ohitetaan (esimerkiksi koska sitä ei voi kääntää).

Git suorittaa komentosarjan automaattisesti jokaiselle commitille, kunnes virhe löytyy.

#!/bin/bash

# Example test script for git bisect run
# Replace 'make test' with your actual test command

if make test;
then
  exit 0 # Tests passed, commit is good
else
  exit 1 # Tests failed, commit is bad
fi

Bisect-työnkulun tarkistus

Mitkä seuraavista komennoista ovat olennaisia, kun suoritat manuaalista git bisect -hakua virheen löytämiseksi?

Vianmääritys tehostui!

Hallitset nyt komennon git bisect! Tämä tehokas työkalu muuttaa virheiden etsimisen työläästä tehtävästä tehokkaaksi ja järjestelmälliseksi binäärihakuprosessiksi.

  • Aloita komennolla git bisect start ja määritä hyvät ja huonot commitit.
  • Testaa commitit ja merkitse ne good- tai bad-tilaan.
  • Käytä komentoa git bisect skip testaamiskelvottomiin committeihin.
  • Automatisoi vianmääritys nopeasti komennolla git bisect run.
  • Lopeta aina komennolla git bisect reset.

Onnea virheiden metsästykseen!

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 ”Virheenkorjaus Git Bisectillä” ilmainen?

Kyllä – oppitunnin ”Virheenkorjaus Git Bisectillä” 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 ”Virheenkorjaus Git Bisectillä”?

Käyttäkää `git bisect` -komentoa paikantaaksenne tehokkaasti täsmällisen commitin, joka toi virheen koodiin, ja säästääksenne arvokasta virheenkorjausaikaa. 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 2/4.

Kuinka kauan ”Virheenkorjaus Git Bisectillä”-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. Kadonneiden commitien ja haarojen palauttaminen
  2. Virheenkorjaus Git Bisectillä
  3. Git-repositorion suorituskyvyn optimointi
  4. Työn pelastaminen Reflogilla ja Stashilla
← Takaisin: Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut