Programiranje

5 naprednih ukazov Git za izboljšanje vaše igre Git

Če ste danes razvijalec, je verjetno, da ste se že naučili Gita, sistema za nadzor različic, ki je v središču sodobnih delovnih procesov programske opreme. Poznate osnove - kako delujejo skladišča, kako ustvariti veje in narediti spremembe ter kako te spremembe združiti in povleči zahteve.

Zdaj, ko poznate osnove, je čas, da se nekoliko povišate - da izkoristite nekatere zmogljivejše funkcije Gita v svojem delovnem toku. Tu je pet naprednih funkcij Git, ki bodo del vaših trenutnih in prihodnjih prizadevanj za razvijalce.

Poenostavite zgodovino zavez z git rebase

Ko imate v projektu dve veji (npr. Razvojno vejico in glavno vejo), ki imata spremembe, ki jih je treba kombinirati, git merge ukaz je naraven in neposreden način njihovega poenotenja. A združiti doda zgodovino razvoja ene veje kot obveznost združitve z drugo. Čeprav to popolnoma ohranja obe zgodovini, lahko oteži spremljanje celotne zgodovine projekta. V nekaterih primerih boste morda želeli enostavnejši in čistejši rezultat.

The git rebase command prav tako združi dve veji, vendar to počne nekoliko drugače. A git rebase prepiše zgodovino predavanj ene veje, tako da je druga veja vanjo vključena od trenutka, ko je bila ustvarjena. To omogoča manj hrupno in bolj linearno zgodovino predavanj za to vejo. Pomeni pa tudi, da se odstranijo potencialno koristne podrobnosti o drugi veji in postopku združevanja.

V ta namen preusmeriti je najbolje uporabiti, če imate več zasebno veje, ki jih želite združiti v enotno, čisto zgodovino predavanja, preden jo združite z javno vejo. Na ta način boste v celoti izkoristilipreusmeriti - naredite zgodovino zaveze bolj linearno in manj hrupno - ne da bi prikrili ključne podrobnosti o zgodovini prevzema vašega projekta.

Počisti združitve z git merge --squash

Drug način za združevanje in poznejše zaveze, manj hrupne, je uporaba - skvoš možnost v git merge. - skvoš vzame vse prevzete iz dohodne veje in jih poravna v en sam, konsolidiran prevzem.

Lepota zmečkane združitve je v tem, da lahko izberete, kako uporabiti nastale uprizorjene datoteke. Celoten sklop sprememb lahko preprosto odobrite kot eno ali pa nekaj datotek naenkrat, ko so spremembe tesno povezane. Zmečkana združitev je koristna tudi, če je zgodovina predaj dohodne veje koristna samo v kontekstu te veje ali če je iz zasebne veje, ki bo vseeno zavržena.

Tako kot pri a preusmeriti, ta tehnika se najbolje obnese notranje veje za obvladovanje, po potrebi pa je primeren tudi za zahteve za vlečenje.

Pospešite iskanje napak z git bisect

Subtilne regresije v kodi je najtežje izzvati. Predstavljajte si, da ste pravkar v svojo kodno zbirko dodali test za preganjanje napake, vendar niste prepričani, kdaj se je napaka prvič pojavila ... in v svojem skladišču imate na stotine ali celo tisoče opravkov. Thegit bisect ukaz vam omogoča močno zmanjšanje količine kode, ki jo morate iskati, da najdete objavo, ki je ustvarila napako.

Ko omogočite razpolovi (git bisect start) v kodni bazi določite dve točki, ki sta vezani na vaše iskanje: eno, kjer veste, da so stvari slabe (GLAVA, običajno), in tak, kjer veste, da so bile stvari še vedno dobre. razpolovi bo preveril urejanje na polovici poti med slabim in dobrim in vam omogočil izvajanje testov. Ta postopek binarnega razdeljevanja se ponavlja, dokler se ne pojavi prevzem, ki je zlomil stvari.

git bisect je božja dar za velike zbirke kod z dolgimi in zapletenimi zgodovinami zapisov, ki vam prihranijo težave, da boste morali poiskati vsak zadnji zapis v upanju, da boste slej ko prej našli svojo napako Pri zelo najmanj zmanjša za polovico količino iskanja in testiranja, ki ga morate opraviti.

Ponovno se prijavi z git cherry-pick

Mnogi napredni git ukazi so uporabni le v zelo specifičnih okoliščinah in jih varno prezrejo tudi zmerno napredni uporabniki. Ko pa se zaletiš v eno od teh posebnih okoliščin, se jih splača poznati.

Razmislite git cherry-pick. Omogoča vam, da sprejmete določeno odobritev - katero koli odobritev iz katere koli podružnice - in jo uporabite za drugo vejo, ne da bi morali uporabiti druge spremembe iz zgodovine te zaveze. To je koristno v nekaj ključnih okoliščinah:

  • Zavezali ste se za napačno vejo in jo želite hitro uporabiti za pravo.
  • Preden nadaljujete z drugim delom na kodi glavne enote, želite uporabiti popravek iz veje na trunk.

Upoštevajte, da imate poleg neposredne uporabe objave tudi nekatere možnosti češnja to. Če greš mimo - no-commit Možnost, na primer, češnjevo potrdilo se postavi na odrsko območje trenutne veje.

Elegantno organizirajte projekte s podmoduli Git

Tako kot večina programskih jezikov ponuja način za uvoz paketov ali modulov, tudi Git ponuja način za samodejno vključitev vsebine enega skladišča v drugo, podmodul. Lahko ustvarite podimenik znotraj repoja in ga samodejno zapolnite z vsebino drugega repoja, običajno tako, da se zaradi doslednosti sklicujete na določeno zgoščevalno oznako.

Upoštevajte, da podmoduli Git najbolje delujejo pod naslednjimi pogoji:

  • Zadevni podmoduli se ne spreminjajo pogosto ali pa so zaklenjeni na določeno odobritev. Vsako delo na podmodul, namesto s podmodul, je treba upravljati ločeno.
  • Vsi uporabljajo različico Gita, ki podpira podmodule in razume korake, potrebne za delo z njimi. Na primer, imeniki podmodulov niso vedno samodejno poseljeni z vsebino repozitorija podmodula. Morda boste morali uporabiti posodobitev podmodula git ukaz na repo, da posodobite vse.
$config[zx-auto] not found$config[zx-overlay] not found