Jos olet samanlaisessa tilanteessa etkä tiedä mikä muutos rikkoi koodin tai WHO monista kirjoittajista omistaa Tämä vika / ominaisuus , sitten git bisect on tie ulos. Joten tässä artikkelissa git bisect opit kuinkagit bisect
'Komento tulee pelastus havaita ensimmäinen virheellinen virhe, joka esittelee virheen binaarihakualgoritmin avulla.
Tämän artikkelin aiheet ovat seuraavat:
Miksi käyttää git bisectia?
Ei ole epäilystäkään siitä, että sinulla on tapana luoda useita sitoumuksia jokaiselle pienelle muutokselle . Tällaisessa tilanteessa koodin virheenkorjauksesta tulee ikävä tehtävä, koska joudut palaamaan manuaalisesti ajassa taaksepäin projektin tilannekuvan jokaisessa yksittäisessä versiossa toimivan koodin testaamiseksi ja virheen havaitsemiseksi. Nyt tämä saa vieläkin enemmän monimutkainen Kun sinulla on toisen työn tarkastettavaksi ilman lyijypistettä, myös pyytämällä jokaista puhdistamaan omat virheensä, ei myöskään kuulosta kovin toteutettavalta.
Matkan varrella saatat myös luoda ja hylätä useita 'ominaisuus' (tai korjaustiedostoja) haaroja prosessissa ja tuhlata aikaa ja vaivaa poikkeamalla pääkehityksestä.
Joten, välttääksesi tällaisia tilanteita, voit käyttäägit bisect
komento löytää huono projektiversio (tai tilannekuva) ja lopulta korjata segit palaa
komento.
Kuinka 'git bisect' hakee?
Tämä komento puolittaa (jakaa) historiasi hyvä ja huono tehdä alue. Se osoittaa sinun nykyinen projekti osavaltio a keskitason tehdä tilannekuva. Git bisect -komento siirtyy sitten läpi jokainen sitoutumistunnus välillä tauko jokaisessa otoksessa, jotta voit testaa koodi . Jos virhe on olemassa, ilmoitat sitoutumisesta huono, ellei niin hyvä ellei haku loppu.
Syntaksi
git bisect
Ymmärtääksemme git bisectin paremmin luomalla projektin, joka kehittää koodin yksinkertaiselle navigointisovellukselle käytettäväksi autossa.
Alustava projektin määritys
Voit luoda projektin, joka kehittää autossa käytettävän yksinkertaisen navigointisovelluksen koodin, noudattamalla seuraavia ohjeita:
Vaihe 1: Luo uusi hakemisto $ HOME -kansioon:
cd $ HOME mkdir my_nav_app
Vaihe 2: Siirry uuteen hakemistoon:
cd $ my_nav_app
Vaihe 3: Kloonaa projekti ladataksesi GitHub-sivultani:
git-klooni https://github.com/divyabhushan/my_nav_app.git
Ymmärretään nyt projektin hakemistot ja tiedostojen asettelu komennon tulostamalla tavalla:ls -TR
Seuraavaksi katsotaan projektihistorian päiväkirjaa, jotta voimme tarkastella tekemiäni sitoumuksia tämän koodin luomiseksi.
Esimerkiksi yksinkertainen git-lokikomento tulostaa historian yksityiskohtaisesti, mutta haluan melko muotoilla ja mukauttaa historiaa. Sallikaa meidän sitten aseta aliaksen nimi - ”hist” käyttämällä git alias komento alla olevan kuvan mukaisesti:
git alias.hist 'log --pretty = format:'% C (keltainen)% h% Creset% ad | % C (vihreä)% s% Creset% C (punainen)% d% Creset% C (sininen) [% an] '--graafi - sisustus - päiväys = lyhyt'
Suoritan nyt tämän virheenkorjausominaisuuden erillisessä haarassa, jotta en häiritse pääkoneen pääkehitystä. Voit tehdä sen seuraamalla seuraavia komentoja:
- Luo haara 'dev': [isäntä] $
git haara dev
- Vaihda haaraan ”dev”: $
git kassalle dev
- Luettele historialokit: [dev] $
mene hist
[Huomaa: tässä käytetään alias-komentoa]
Lisäksi olen korostanut viimeisen tunnetun hyvän sitoutumisen, jonka tiedän, että käsikirjoitukseni toimi hyvin odotettujen testitulosten kanssa, tämä sitoutumisen tilannekuva on merkitty kuten v1.0.
Joten nyt, kun tiedämme viimeisen hyvän sitoutumisemme, mennään eteenpäin tässä artikkelissa 'git bisect' ja testataan sovellusta.
Testaa sovellus
Suorita komentosarja muodossa - $./scripts/myApplication.sh
[testataan ensimmäistä kertaa]
Nykyinen projektitilani on selvästi virhe , enkä ole varma, minkä muutoksen tein sitoumuksessa, joka toi tämän muutoksen. Joten seuraavaksi tässä artikkelissa git bisect, katsotaanpa, kuinka tunnistaa huono sitoutuminen.
Huonon sitoutumisen tunnistaminen
Aloita huono sitoutuminen, noudata seuraavia ohjeita:
- Käynnistä bisect-komento :
git bisect start
- Mainitse huono sitoutumistunnus:
git puolittele huono pää
taigit bisect c5b3ca8
- Mainitse viimeinen tunnettu-hyvä-sitoutumistunnus:
git puolittele hyvä v1.0
taigit puolittele 93859d8
Tämä puolittaa sitoumushistoria-alueen noin puolivälissä hyvien ja huonojen sitoumusten välillä, mikä vie meidät sitoutumistunnukseen: f61a7e8
Siksi komento on tarkistanut projektiversion sellaisenaan kuin tämä sitoutumistunnus. Nyt, mennään eteenpäin ja testataan sovellustamme uudelleen.
Käynnistä sovellus komennolla : $./scripts/myApplication.sh
[testataan toista kertaa]
Sovelluksesta lähtien ohitettu tässä sitoumuksessa tämä sitoumus ei todellakaan ole huono sitoumus. Joten seuraavaksi sinun on ilmoitettava sama bisect-komennolle kuin - $git bisect hyvä
Nyt tämä kaventaa hakutuloksia edelleen alueen ensimmäiselle puoliskolle, kuten on esitetty -
Testaa sovellustasi uudelleen - Komento: $./scripts/myApplication.sh
[testataan kolmannen kerran]
Joten, koska näemme virheen kuten edellä, tämä on huono sitoutuminen.
Kerro bisect-komennolle, suorita $git bisect huono
Se kaventaa hakua entisestään ja tuo sinut viimeiseen siniseen ympäröityyn keskiversioon: a6ac769
projektin seuranta- ja valvontasuunnitelma
Joten testaan sovellukseni viimeisen kerran samalla komennolla: $./scripts/myApplication.sh
[testataan neljännen kerran]
Koska sovellus epäonnistui jälleen, se on silti huono sitoutuminen. Joten, anna suorittaa seuraava komento:
Suorita komento: git bisect huono
Löytyi huono sitoutuminen
Tämä päättää ainoan jäljellä olevan sitoutumisen, joka on huono
Joten tiedät, että koodi rikkoi. Mitä seuraavaksi?
Ymmärrä mitä tiedostossa vika oli
Tässä tapauksessa lähtö antaa sinulle vähän tietoa sitoutumistunnus , tekijän nimi , ja kirjoittajan päivämäärä kanssa sitoutumisviesti ja polku sitä muokattiin.
Jos haluat debugoida edelleen, sinun on lukea sitoa id-objekti .
Komento: git show a6ac76994b3f6c7519204f910fc787b7928cf8ef
Tämä lukee sitoutumisobjektin ja tulostaa lokiviestin ja tekstieron.
Voit myös käyttää 'git blame' -komentoa analysoidaksesi, miten ja missä sitoutumisessa kukin rivi muutti jokainen kirjoittaja, suorita komento seuraavasti:git syyttää koodia / develop_nav.sh
Lopeta haku
Pysäytä haku käyttämällä seuraavaa komentoa:
Komento: git bisect reset
Tällöin puolittamisprosessi pysäytetään ja olet taas haarassa, josta aloitit haun. Seuraava vaihe on koodin korjaaminen tai virheenkorjaus.
Kuinka korjata / virheenkorjaus koodi?
No, on olemassa muutama kiertotapa, jonka voit tehdä korjataaksesi projektin nykytilan nyt, kun olet tunnistanut virheen tuoman sitoutumisen.
Jos kuitenkin muutat sitoumusta a jaettu arkisto se on parasta palata muutos git palaa ”Komento.
Tehtävä: Palauta mainitun huonon sitoutumisen tekemät muutokset
Komento: git revert a6ac769
matriisin pituus javascript-muodossa
Tämän seurauksena tämän sitoutumisen tekemien muutosten palauttaminen teki kaksi asiaa:
- Se poisti viimeiset 3 lisättyä riviä (merkitty vihreällä) ja lisäsi poistetun rivin (merkitty punaisella) takaisin. (käänteinen a6ac769: stä)
- Luonut ylimääräisen sitoutumisen palautusviestitiedoilla
'Palauta-komento myös helpottaa alkuperäisestä sitoutumisesta palauttamasi muutoksen seuraamista'
Käytä 'näytä' komento uudelleen lukea objektitunnus, kuten so-
Komento: git-esitys 801f029
Mene nyt ja testaa sovellusta. Se toimii oikein.
Komento: $./scripts/myApplication.sh
Sitä vastoin, jos haluat poistaa huonon sitoutumisen historiasta:
Voit käyttää
git nollaus
'Komento--kova
”-Vaihtoehtoa (vaikka sitä ei suositella jaetussa arkistossa).Tarkista yksittäisen tiedoston aiempi versio käyttämällä
git kassalle
'Komento-
Vaihtoehto.
On huomattava, että tämä tekee muutoksia vain paikalliseen arkistoon, kunnes siirrät muutokset etätietovarastoon. Koska jotkin muutokset luovat uuden sitoutumisobjektin id: n, kuten edellisessä tapauksessa, tällaisissa tapauksissa normaali etätallennustietoväline hylätään, koska historia olisi eronnut. Sinun on käytettävä git push
'Komento--pakottaa
Vaihtoehto.
Päivitä päähaara
Vaikka korjasin virheen dev-haaralleni, voin nyt yhdistää tämän muutoksen myös ”master” -haaraan-
- vaihda päällikölle, komento:
git kassan päällikkö
- vedä viimeisimmät päivitykset alkuperästä / päällikkö päälliköksi, komento:
git pull alkuperä
- yhdistä dev-muutokset, komento:
git sulautua jättiläinen
Yhdistäminen voi kuitenkin aiheuttaa ristiriitoja, jos etätallennustiedostosta on tehty enemmän muutoksia. Ratkaise ristiriidat ja jatka yhdistämistä.
Lopuksi, työnnä vain vakaa ”päähaara”, joka sitoutuu etätietovarastoon, kun likainen työsi (vika, ominaisuudet, parannukset) tehdään vain tämän ominaisuuden haaroille, kuten ”dev” tässä esimerkissä.
Lisäksi on parasta omaksua looginen haarautumisstrategia virtaviivaistaa ja suojaa git-työnkulun prosessi.
Yhteenvetona: 'git bisect' on kätevä ja hyödyllinen komento nopeasti tunnistaa sitoutumistunnus että otettu käyttöön että vika juoksukoodissasi kattavan avulla binaarihaku loogisesti jakaminen sitoutumislokit puolivälissä hyvä ja huono tehdä alue . Lopuksi olet oppinut havaita viallinen sitoutuminen ja palata sen tekemä muutos.
Lisäksi alikomentoihin ”hyvä” ja ”huono” voit myös käyttää termejä kuten uusi ja vanha kuvaamaan versiotilaa. Voit suorittaa komennon useita kertoja välittämällä erilaisia alikomentoja ja tarkistus- / sitoutumistunnuksia tunnistaaksesi erilaiset sitoutumis- (she-1) -tunnukset. Vaihtoehtoisesti voidaan suorittaa automaattinen testiskripti rikkinäisen koodin rakentamiseksi tällä komennolla. Etsi myös yksityiskohtainen kuvaus tästä komennosta suorittamallagit bisect --apua
terminaalissa. Joten, ihmiset tämän kanssa olemme päättäneet tämän artikkelin Git Bisectistä.
DevOpsin tarkoituksena on luoda laadukkaampia ohjelmistoja nopeammin ja luotettavammin samalla kutsumalla tiimien välistä suurempaa viestintää ja yhteistyötä. Jos tämä artikkeli kiehtoo sinua, c helvetti Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Edureka DevOps -sertifiointikoulutuskurssi auttaa oppijoita ymmärtämään DevOpsia ja saa asiantuntemusta erilaisista DevOps-prosesseista ja työkaluista, kuten Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack ja GIT SDLC: n useiden vaiheiden automatisoimiseksi.
Onko sinulla kysymys meille? Mainitse se 'Git Bisect' -artikkelin kommenttiosassa, niin palaamme asiaan ASAP: ssä.