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.
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 goodOngelman 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 resetTestaamiskelvottomien 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 skipAutomatisointi 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ä.(paitsi1-127125): 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
fiBisect-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 startja määritä hyvät ja huonot commitit. - Testaa commitit ja merkitse ne
good- taibad-tilaan. - Käytä komentoa
git bisect skiptestaamiskelvottomiin committeihin. - Automatisoi vianmääritys nopeasti komennolla
git bisect run. - Lopeta aina komennolla
git bisect reset.
Onnea virheiden metsästykseen!
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
- Kadonneiden commitien ja haarojen palauttaminen
- Virheenkorjaus Git Bisectillä
- Git-repositorion suorituskyvyn optimointi
- Työn pelastaminen Reflogilla ja Stashilla