Git- ja GitHub-ammattilaisen työnkulku · Oppitunti

Git Bisect virheenkorjaukseen

Hyödyntäkää `git bisect` -komentoa virheen aiheuttaneen commitin tehokkaaseen etsimiseen ja säästäkää aikaa virheenkorjauksessa.

Oppitunti 2/411 vaihetta

Git Bisect virheenkorjaukseen on ilmainen Git- ja GitHub-ammattilaisen työnkulku-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- ja GitHub-ammattilaisen työnkulku-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Git- ja GitHub-ammattilaisen työnkulku-kurssilla on yhteensä 4 oppituntia.

Virheiden etsiminen nopeammin Gitin avulla

Virheenkorjaus voi olla haastavaa. Joskus virhe ilmestyy, etkä tiedä, mikä muutos aiheutti sen.

git bisect on tehokas Git-komento, jonka avulla voit paikantaa tarkasti commitin, joka toi virheen koodiin. Se käyttää binäärihakualgoritmia tuhansien commitien nopeaan rajaamiseen.

Binäärihaun teho

Kuvitellaan, että projektissasi on 100 committia ja virhe ilmestyi jossain ensimmäisen ja viimeisen commitin välillä. Jokaisen commitin tarkistaminen manuaalisesti olisi hidasta!

git bisect toimii kuin ”arvaa numero” -peli:

  • Ilmoitat Gitille hyvän commitin, jossa virhettä ei ollut.
  • Ilmoitat Gitille huonon commitin, jossa virhe on.
  • Git valitsee suunnilleen keskellä olevan commitin ja pyytää sinua testaamaan sen.
  • Merkitset commitin hyväksi tai huonoksi, jolloin Git puolittaa hakutilan.

Aloitetaan haku!

Ensin sinun on ilmoitettava Gitille, että aloitat bisect-istunnon. Seuraava komento alustaa prosessin:

git bisect start

Kun istunto on aloitettu, määrität tunnetun ”huonon” commitin, jossa virhe esiintyy, ja tunnetun ”hyvän” commitin, jossa virhettä ei varmasti esiinny.

Usein ”huono” commit on nykyinen HEAD, ja ”hyvä” commit voi olla vanhempi julkaisutagi tai muutaman päivän takainen commit.

Commit-rajojen merkitseminen

Kun git bisect on käynnistetty, määrität hakualueesi:

  • Huono commit: Commit, jossa tiedät virheen esiintyvän. Käytä komentoa git bisect bad <commit-hash> tai pelkkää komentoa git bisect bad, jos kyseessä on nykyinen HEAD.
  • Hyvä commit: Commit, jossa tiedät, ettei virhettä esiinny. Käytä komentoa git bisect good <commit-hash>.

Git checkoutaa tämän alueen keskellä olevan commitin automaattisesti.

Testaaminen ja haun rajaaminen

Kun olet merkinnyt hyvät ja huonot commitit, Git checkoutaa automaattisesti alueen keskellä olevan commitin. Tehtäväsi on testata koodia tässä checkoutatussa commitissa.

  • Jos virhe esiintyy, kirjoita git bisect bad.
  • Jos virhettä ei esiinny, kirjoita git bisect good.

Git valitsee jäljelle jäävältä alueelta jälleen keskimmäisen commitin. Toistat tämän, kunnes Git löytää ensimmäisen ”huonon” commitin.

Virheen syntymisen simulointi

Kuvitellaan yksinkertainen ”virhe” komentosarjassa. Simuloidaan projektihistoria, johon lisättiin pieni virhe.

Tässä on alkuperäinen ”hyvä” komentosarja:

main.sh

#!/bin/bash
echo "Hello from script!"
sum=0
for i in $(seq 1 3); do
  sum=$((sum + i))
done
echo "Sum is: $sum"

Bisect-toiminnon manuaalinen läpikäynti

Oletetaan nyt, että myöhemmässä commitissa silmukka muutettiin vahingossa muotoon seq 1 4, jolloin summa on väärä (10 eikä 6).

Aloittaisimme näin:

git bisect start

Merkitsemme nykyisen HEAD-osoittimen, jossa virhe esiintyy, huonoksi:

git bisect bad HEAD

Sen jälkeen merkitsemme vanhemman, tunnetusti toimivan commitin hyväksi:

git bisect good <old_good_commit_hash>

Git ohjaa etenemistäsi checkoutaamalla committeja. Suoritat komennon ./main.sh, tarkistat onko summa 6 vai 10 ja kirjoitat sen mukaan git bisect good tai git bisect bad.

Virheenkorjausprosessin automatisointi

Jokaisen commitin testaaminen manuaalisesti voi silti viedä paljon aikaa, jos testi on monimutkainen. Komennolla git bisect run voit automatisoida tämän!

Anna Gitille komentosarja, joka palauttaa seuraavat poistumiskoodit:

  • 0 (nolla), jos commit on hyvä.
  • 125, jos commit ohitetaan.
  • Minkä tahansa muun nollasta poikkeavan arvon, kuten 1, jos commit on huono.

Git suorittaa tämän komentosarjan jokaisessa testattavassa commitissa, kunnes virhe löytyy.

#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
  exit 0 # Good commit
else
  exit 1 # Bad commit
fi

Haun viimeisteleminen

Kun git bisect on onnistuneesti tunnistanut ensimmäisen huonon commitin, se ilmoittaa commit-tiivisteen ja commit-viestin.

Kun olet löytänyt virheen aiheuttaneen commitin ja ymmärtänyt ongelman, on tärkeää palauttaa repositorio alkuperäiseen tilaansa ennen bisect-toiminnon aloittamista:

git bisect reset

Tämä komento palauttaa sinut siihen commitiin, jossa olit aloittaessasi bisect-toiminnon, ja siivoaa väliaikaisen bisect-tilan.

Bisect-osaamisen tarkistus

Olet juuri suorittanut komennon git bisect start, merkinnyt nykyisen HEAD-osoittimen huonoksi ja vanhemman commitin hyväksi. Git checkoutaa keskellä olevan commitin.

Suoritat testit ja huomaat, että virhe ESIINTYY tässä keskimmäisessä commitissa.

`git bisect` – kertaus

Onnittelut! Olet oppinut käyttämään git bisect -komentoa:

  • Se on tehokas työkalu virheen aiheuttaneen commitin tarkkaan löytämiseen.
  • Se käyttää binäärihakua tehokkuuden parantamiseksi.
  • Määrität ”hyvät” commitit, joissa ei ole virhettä, ja ”huonot” commitit, joissa virhe esiintyy.
  • Voit automatisoida testausprosessin komennolla git bisect run <script>.
  • Muista aina suorittaa haun jälkeen komento git bisect reset tilan siivoamiseksi!
Aloita maksutta

Opi Git- ja GitHub-ammattilaisen työnkulku 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 Bisect virheenkorjaukseen” ilmainen?

Kyllä – oppitunnin ”Git Bisect virheenkorjaukseen” 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- ja GitHub-ammattilaisen työnkulku-kurssin, päivitä CoddyKit PROhon. Git- ja GitHub-ammattilaisen työnkulku-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Git Bisect virheenkorjaukseen”?

Hyödyntäkää `git bisect` -komentoa virheen aiheuttaneen commitin tehokkaaseen etsimiseen ja säästäkää aikaa virheenkorjauksessa. Harjoittelet Git- ja GitHub-ammattilaisen työnkulku-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Git- ja GitHub-ammattilaisen työnkulku-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Git- ja GitHub-ammattilaisen työnkulku-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Git Bisect virheenkorjaukseen”-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- ja GitHub-ammattilaisen työnkulku-oppitunnilla?

Kyllä. Jokainen Git- ja GitHub-ammattilaisen työnkulku-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 Reflog ja historian palauttaminen
  2. Git Bisect virheenkorjaukseen
  3. Repositorion ylläpito ja siistiminen
  4. Historian uudelleenkirjoittaminen git filter-repolla
← Takaisin: Git- ja GitHub-ammattilaisen työnkulku