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.