Kui olete sarnases olukorras ja ei tea mis muutus rikkus koodi või WHO paljude kaasautorite hulgast omab seda viga / funktsioon , siis on git bisect teie väljapääs. Nii saate sellest git bisecti artiklist teada, kuidasgit poolitada
‘Käsk tuleb päästmine esimese vigase tuvastamise korral, mis vea tutvustab, binaarse otsingu algoritmi abil.
Selles artiklis käsitletavad teemad on järgmised:
Miks kasutada git bisecti?
Pole kahtlust, et iga väiksema muutuse korral kipute looma hulga kohustusi . Sellises stsenaariumis muutub koodi silumine tüütuks ülesandeks, kuna töötava koodi testimiseks ja vea tuvastamiseks peate projekti hetktõmmise iga üksiku redaktsiooni jaoks käsitsi tagasi minema. Nüüd saab see veelgi rohkem keeruline kui teil on teise töö, mida kontrollida ilma juhtpunktita, ei kõla ka see, kui palute kõigil oma vead puhastada.
Teel võib olla ka protsessis mitme funktsiooni (või kiirparanduse) haru loomine ja selle ära viskamine ning lõpuks raiskate aega ja vaeva, kaldudes kõrvale põhilisest arengujoonest.
Niisiis saate selliste stsenaariumide vältimiseks kasutadagit poolitada
käsk leida halb projekti redaktsioon (või hetktõmmis) ja lõpuks seegit tagasi
käsk.
Kuidas ‘git bisect’ otsib?
See käsk poolitab (jagab) teie ajaloo hea ja halb pühenduma vahemik. See osutab teie praegune projekti riik kuni a keskklassi pühenduma hetktõmmis. Seejärel liigub läbi git bisect käsk iga toime ID selle vahemiku vahel paus iga hetktõmmise juures, et saaksite seda teha testi koodi . Kui viga on olemas, deklareerite kohustuse järgmiselt halb, kui mitte nii hea kui otsing ei lõpe.
Süntaks
git poolitada
Git bisecti paremaks mõistmiseks koostame projekti, mis töötab välja autos kasutatava lihtsa navigeerimisrakenduse koodi.
Projekti esialgne seadistamine
Projekti loomiseks, mis töötab välja autos kasutatava lihtsa navigeerimisrakenduse koodi, võite järgida järgmisi samme:
Samm 1: Looge oma kausta $ HOME uus kataloog:
cd $ HOME mkdir my_nav_app
2. samm: Navigeerige uude kataloogi:
cd $ my_nav_app
3. samm: Kloonige projekti minu GitHubi lehelt alla laadimiseks:
giti kloon https://github.com/divyabhushan/my_nav_app.git
Nüüd mõistame käsudega trükitud projekti katalooge ja failide paigutust:ls -lTR
Järgmisena vaadake projekti ajaloo ajakirja, et vaadata selle koodi loomiseks tehtud kohustusi.
Näiteks prindib lihtne git logi käsk ajaloo üksikasjalikult, kuid mulle meeldib ajalugu üsna vormindada ja kohandada. Seeläbi laseme meil määrake varjunimi - ‘hist’ kasutades git alias käsk, nagu allpool näidatud:
git alias.hist 'log --pretty = format:'% C (kollane)% h% Creset% ad | % C (roheline)% s% Creset% C (punane)% d% Creset% C (sinine) [% an] '--graaf --dekoratsioon --kuupäev = lühike'
Nüüd teostan selle veaparanduse funktsiooni eraldi harus, et mitte segada ‘master’ haru põhiarendust. Selleks järgige allolevat käskude komplekti:
- Loo haru „dev”: [kapten] $
git haru dev
- Üleminek harule „dev”: $
git kassas dev
- Lisage ajaloo logid: [dev] $
mine hist
[Märkus: siin kasutatakse käsku „alias”]
Lisaks olen rõhutanud viimast teadaolevat head pühendumist, mida tean, kus mu skript toimis oodatud testijuhtumi tulemustega hästi, see märgistatud kui v1.0.
Niisiis, nüüd, kui teame oma viimast head pühendumist, jätkame selles artiklis „git bisect” ja testime rakendust.
Testige rakendust
Käivitage skript kui - $./scripts/myApplication.sh
[katsetan esimest korda]
On selge, et minu praegune projekti seis on viga ja ma pole kindel, millise muutuse ma oma kohustuses tegin, mis selle muudatuse sisse viis. Niisiis, järgmisena selles artiklis git bisect kohta, vaatame, kuidas tuvastada halb toime.
Halva isiku tuvastamine
Halva kohustuse kontrollimiseks järgige alltoodud samme:
- Käivitage bisect käsk :
git kahepoolne algus
- Mainige halva toimingu ID:
git poolitage halb pea
võigit poolitage c5b3ca8
- Mainige viimase teada-hea-pühendu ID:
git poolitage hea v1.0
võigit poolitada 93859d8
See poolitab kulukohustuste ajaloo vahemiku umbes keskel heade ja halbade kohustuste vahel, mis viib meid kohustuse ID-ni: f61a7e8
Seega on käsk kontrollinud projekti versiooni nii, nagu see oli selle pühenduse ID-s. Nüüd laseme edasi ja testige oma rakendust uuesti.
Käsk rakenduse käivitamiseks : $./scripts/myApplication.sh
[testitakse teist korda]
meetod system.exit lõpetab rakenduse.
Alates rakendusest möödas selles kohustuses pole see kohustus kindlasti halb. Nii peate järgmisena teavitama käsku bisect nagu - $git poolitada hea
Nüüd kitsendab see otsingutulemit veelgi vahemiku esimesse poolde, nagu näidatud -
Testige oma rakendust uuesti - käsk: $./scripts/myApplication.sh
[katsetatakse kolmandat korda]
Seega, kuna näeme ülaltoodud viga, on see halb kohustus.
Andke käsk bisect teada, käivitage $git poolitada halb
See kitsendab otsingut veelgi ja viib teid viimase sinise ümbritsetud keskmise versiooni juurde: a6ac769
Nii et testin oma rakendust veel viimast korda sama käsuga: $./scripts/myApplication.sh
[testitakse neljandat korda]
Kuna rakendus uuesti ebaõnnestus, on see endiselt halb kohustus. Nii laseme käivitada järgmise käsu:
Käivitage käsk: git poolitada halb
Leiti halb toime
See lõpetab ainsana jäänud viimase kohustuse, mis on halb
Nii et teate, et siin läks kood katki. Mis edasi saab?
Mõistke, millises failis oli viga
Sel juhul annab väljund teile minimaalse teabe toime panema id , autori nimi , ja autori kuupäev koos pühendama sõnumit ja tee seda muudeti.
Kui soovite siluda veelgi, peate seda tegema lugeda toime id objekt .
Käsk: git show a6ac76994b3f6c7519204f910fc787b7928cf8ef
See loeb toiminguobjekti ja printib logisõnumi ja tekstidif.
Samuti võite kasutada käsku „git blame”, et analüüsida, kuidas ja millises pühenduses mis rida autor muutis, käivitage käsk järgmiselt:git süüdistuskood / develop_nav.sh
Lõpeta otsing
Otsingu peatamiseks kasutage järgmist käsku:
Käsk: git bisect reset
Seega poolitusprotsess peatatakse ja olete tagasi oksal, kust otsimist alustasite. Järgmine samm on koodi parandamine või silumine.
Kuidas koodi parandada / siluda?
Noh, on paar lahendust, mida saate projekti praeguse olukorra parandamiseks teha nüüd, kui olete tuvastanud kohustuse, mis tõi vea kõigepealt.
Kui muudate aga kohustust a jagatud hoidla see on parim tagasi pöörduma muutus, kasutades git tagasi ‘Käsk.
Ülesanne: Pöörake tagasi mainitud halva toimingu tehtud muudatused
Käsk: git revert a6ac769
Selle tulemusena tegi selle kohustuse tehtud muudatuste tühistamine 2 asja:
- See kustutas viimased 3 lisatud rida (tähistatud rohelisega) ja lisas kustutatud rida (tähistatud punasega) tagasi. (a6ac769 tagakülg)
- Lõi teate ennistamise lisakohustuse
'Käsk Ennista hõlbustab ka algsest kohustusest tagastatud muudatuste jälgimist'
Kasuta ‘Näita’ käsk uuesti, et lugeda objekti ID, nagu nii-
Käsk: git show 801f029
Nüüd minge edasi ja testige rakendust. See täidetakse korralikult.
Käsk: $./scripts/myApplication.sh
Seevastu, kui soovite halva kohustuse ajaloost eemaldada, toimige järgmiselt.
Võite kasutada
giti lähtestamine
‘Käsk- raske
”Valik (ehkki jagatud hoidlas seda ei soovitata).Vaadake ühe faili varasemat versiooni, kasutades ‘
git kassasse
‘Käsk-
‘Variant.
Tuleb märkida, et see muudab teie kohalikus hoidlas muudatusi ainult seni, kuni muudate muudatused kaughoidlasse. Kuna mõned muudatused loovad uue toimeobjekti ID, nagu ka ülalpool, siis sellistel juhtudel lükatakse kaughoidlasse tavaline tõukejõud tagasi, kuna ajalugu oleks lahknenud. Peate kasutama git push
‘Käsk- jõud
‘Variant.
Uuenda haru haru
Kuigi ma parandasin vea oma dev-harul, saan nüüd selle muudatuse ka master-haruga ühendada -
- lülita 'master' -ile, käsk:
git kassade kapten
- tõmmake hiljutised värskendused asukohast „originaal / põhi” väärtusele „põhi”, käsk:
git pull päritolu
- liida ‘dev’ muudatused, käsk:
git ühendamise hiiglane
Kuid teie liitmine võib tekitada konflikte, kui kaughoidlast on tehtud rohkem toiminguid. Lahendage konfliktid ja jätkake ühendamist.
Lõpuks lükake kaughoidlasse ainult stabiilne harukontor, kui teie räpane töö (viga, funktsioonid, täiustused) tehakse ainult nende funktsioonide harude jaoks, nagu selles näites ‘dev’.
Pealegi on kõige parem omaks võtta loogiline hargnev strateegia oma sujuva töövoo protsessi sujuvamaks ja turvalisemaks muutmiseks.
Kokkuvõtteks võib öelda, et ‘git bisect’ on käepärane ja kasulik käsk, mis toimib kiiresti tuvastama toime ID seda sisse viidud kuni süü oma jooksva koodi abil ulatuslik binaarotsing loogiliselt jagamine kohustuste logid poolel teel hea ja halb pühenduma vahemik . Kokkuvõtteks sa õppisid avastama vigane toime ja tagasi pöörduma selle tehtud muudatus.
Lisaks alamkäskudele „hea” ja „halb” saate redigeerimise oleku kirjeldamiseks kasutada ka selliseid termineid nagu uus ja vana. Võite käsku käitada mitu korda, edastades erinevad alamkäsud ja muutmise / kinnitamise ID-sid, et tuvastada erinevad toimeandmise (she-1) ID-d. Selle käsu abil võib katkise koodi loomiseks käivitada ka automatiseeritud testskripti. Samuti leiate selle käsu üksikasjaliku kirjelduse käivitadesgit bisect --aita
terminalis. Nii et inimesed, sellega oleme jõudnud Git Bisecti artikli lõpuni.
DevOpsi eesmärk on luua kvaliteetsem tarkvara kiiremini ja usaldusväärsemalt, kutsudes meeskondade vahelist suuremat suhtlust ja koostööd. Kui see artikkel teid huvitab, c kurat välja autor Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik koosneb enam kui 250 000 rahulolevast õppijast ja mis levib üle kogu maailma. Edureka DevOpsi sertifitseerimiskoolitus aitab õppijatel mõista, mis on DevOps, ning omandada teadmisi mitmesuguste DevOpsi protsesside ja tööriistade kohta, nagu Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack ja GIT SDLC mitme etapi automatiseerimiseks.
Kas teil on meile küsimus? Palun mainige seda artikli Git Bisect kommentaaride jaotises ja võtame teiega niipea ühendust.