Programovanie

5 pokročilých príkazov Git na vylepšenie vašej hry Git

Ak ste dnes vývojárom, je pravdepodobné, že ste sa naučili Git, systém riadenia verzií v srdci moderných softvérových pracovných postupov. Poznáte základné princípy - ako fungujú úložiská, ako vytvárať pobočky a vykonávať zmeny a ako tieto zmeny zlúčiť a načítať žiadosti.

Ale teraz, keď už ovládate základné veci, je čas trochu sa povzniesť - využiť niektoré z výkonnejších funkcií Gitu vo vašom pracovnom postupe. Tu je päť pokročilých funkcií Gitu, ktoré sú súčasťou vášho súčasného i budúceho úsilia vývojárov.

Zjednodušte históriu záväzkov pomocou git rebase

Ak máte v projekte dve vetvy (napr. Vývojovú a hlavnú), obe majú zmeny, ktoré je potrebné kombinovať, git zlúčiť príkaz je prirodzený a priamy spôsob ich zjednotenia. A zlúčiť pridáva históriu vývoja jednej vetvy ako zlúčenie do druhej. To síce zachováva obidve histórie úplne podrobne, ale môže to sťažiť sledovanie celkovej histórie projektu. V niektorých prípadoch môžete chcieť jednoduchší a čistejší výsledok.

The git rebase príkaz tiež spája dve vetvy, ale robí to trochu inak. A git rebase prepíše históriu spáchania jednej vetvy tak, aby bola do nej druhá vetva začlenená od bodu, v ktorom bola vytvorená. Takto bude história potvrdenia pre túto vetvu menej hlučná a lineárnejšia. Znamená to však tiež, že sa odstránia potenciálne užitočné podrobnosti o druhej vetve a procese zlúčenia.

Za týmto účelom rebase sa najlepšie používa, keď ich máte viac súkromné pobočky, ktoré chcete zlúčiť do jednej, čistej histórie potvrdenia a potom ich zlúčiť s verejnou pobočkou. Týmto spôsobom získate všetky výhodyrebase - urobiť históriu záväzkov lineárnejšou a menej hlučnou - bez toho, aby ste zakryli rozhodujúce podrobnosti o histórii záväzkov k vášmu projektu.

Vyčistenie splýva s git merge - squash

Ďalším spôsobom, ako urobiť zlúčenie a následné potvrdenie, menej hlučné, je použitie súboru --squash možnosť v git zlúčiť. --squash vezme všetky záväzky z prichádzajúcej pobočky a zlúči ich do jedného konsolidovaného záväzku.

Krása zlúčeného zlúčenia je, že si môžete zvoliť, ako použiť výsledné súbory po etapách. Môžete iba potvrdiť celú skupinu zmien ako jeden celok, alebo môžete zaviazať niekoľko súborov súčasne, kde zmeny úzko súvisia. Zlúčené zlúčenie je tiež užitočné, ak je história potvrdenia prichádzajúcej vetvy užitočná iba v kontexte tejto vetvy alebo ak ide o súkromnú pobočku, ktorá sa aj tak zahodí.

Rovnako ako v prípade a rebase, táto technika funguje najlepšie pri spáchaní interné pobočky zvládnuť, ale je to tiež vhodné pre požiadavky na ťah, ak je to potrebné.

Urýchlite vyhľadávanie chýb pomocou git bisect

Jemné regresie v kóde sú najťažšie rozlúsknuteľné. Predstavte si, že ste práve pridali test do svojej kódovej základne na odstránenie chyby, ale nie ste si istí, kedy sa chyba prvýkrát objavila ... a vo svojom úložisku máte stovky alebo dokonca tisíce záväzkov. Thegit bisect Príkaz umožňuje výrazne znížiť množstvo kódu, ktorý musíte vyhľadať, aby ste našli potvrdenie, ktoré chybu vytvorilo.

Keď povolíte dvojsečná (štart git bisect) zadáte dva body do svojej kódovej bázy, aby ste obmedzili svoje hľadanie: jeden, o ktorom viete, že je zle (HLAVA(zvyčajne) a taký, kde viete, že veci boli stále dobré. dvojsečná skontroluje spáchanie na polceste medzi zlým a dobrým a nechá vás spustiť testy. Tento proces binárneho rozdelenia sa opakuje, kým sa neobjaví potvrdenie, ktoré rozbilo veci.

git bisect je darom z nebies pre veľké databázy kódov s dlhou a zložitou históriou spáchania, čo vám ušetrí problémy s nutkaním prechádzať každým posledným spáchaním v nádeji, že svoju chybu skôr či neskôr nájdete. Na veľmi prinajmenšom znižuje o polovicu množstva hľadania a testovania, ktoré musíte urobiť.

Opäť platí, že s git cherry-pick

Mnoho pokročilých git príkazy sú užitočné iba za úzko špecifických okolností a bezpečne ich ignorujú aj mierne pokročilí používatelia. Ale keď narazíte na jednu z týchto konkrétnych okolností, oplatí sa ich poznať.

Zvážte git cherry-pick. Umožňuje vám prevziať dané potvrdenie - ľubovoľné potvrdenie z ktorejkoľvek pobočky - a použiť ho na inú vetvu bez toho, aby ste museli aplikovať akékoľvek ďalšie zmeny z histórie tohto potvrdenia. Je to užitočné za niekoľkých kľúčových okolností:

  • Zaviazali ste sa pre nesprávnu pobočku a chcete ju rýchlo uplatniť na tú pravú.
  • Pred pokračovaním v práci na kóde kufra chcete použiť opravu z vetvy na kmeň.

Upozorňujeme, že okrem priameho použitia potvrdenia máte aj nejaké možnosti čerešňa to. Ak prejdete --zaviazať napríklad, voľba čerešňa sa umiestni do pracovnej oblasti aktuálnej vetvy.

Elegantne organizujte projekty s podmodulmi Git

Rovnako ako väčšina programovacích jazykov poskytuje spôsob importovania balíkov alebo modulov, Git ponúka spôsob, ako automaticky zahrnúť obsah jedného úložiska do iného, submodul. Môžete vytvoriť podadresár vo vnútri repo a automaticky ho naplniť obsahom iného repo, zvyčajne kvôli konzistencii odkazom na konkrétny hash pre potvrdenie.

Upozorňujeme, že submoduly Git fungujú najlepšie za nasledujúcich podmienok:

  • Predmetné podmoduly sa nemenia často alebo sú uzamknuté pre konkrétny záväzok. Hocijaká práca na skôr než submodul s submodul, by sa mal spravovať osobitne.
  • Každý používa verziu Git, ktorá podporuje submoduly a rozumie krokom potrebným na prácu s nimi. Napríklad adresáre submodulu nie sú vždy automaticky naplnené obsahom úložiska submodulu. Možno budete musieť použiť aktualizácia submodulu git príkaz na repo, aby bolo všetko aktuálne.
$config[zx-auto] not found$config[zx-overlay] not found