Nedávno sme sa pozreli na základy, ako začať používať Git na ovládanie zdroja vo vašich projektoch. Aj keď je to skvelý východiskový bod, existuje množstvo ďalších príkazov a pracovných postupov Git, ktoré vám pomôžu zorientovať sa v používaní Gitu pri každodennej práci s kódovaním.
Pracovné postupy Git
Keď som začal používať Git, zistil som, že viem, ako ho správne používať. Môj ideálny prístup bol urobiť všetky zmeny na jednom mieste bez vetiev a potom ich odovzdať do úložiska a pokračovať v práci.
Aj keď to bolo lepšie ako nepoužívať správu verzií, chvíľu mi trvalo, kým som si uvedomil, že nepoužívam väčšinu výkonu, ktorý Git poskytuje. Aby Git pracoval pre mňa, potreboval som mať stratégiu na vetvenie a zlúčenie mojich zmien.
Potom vyšiel git-flow a ja som ho prijal ako svoju stratégiu. Dodnes si pamätám, že som mal pocit, že nakúkam za nejakú oponu, kde boli úžasní vývojári. Teraz som mal prehľad o tom, ako fungujú, a mohol som sa začať stať jedným z nich.
Ale git-flow nevyhovuje každému scenáru, takže kým sa na to pozrieme, pozrieme sa aj na niekoľko ďalších metód, ako udržať vaše projekty Git organizované, vrátane toho, ako riadim svoje projekty ako osamelý vývojár.
git-flow
Pri pohľade na git-flow teraz uznávam, že softvérové prostredie sa za 10 rokov výrazne zmenilo a git-flow nemusí byť pre váš tím tou najlepšou voľbou. Keď bol napísaný git-flow, bolo zriedkavé nasadiť aplikáciu mnohokrát za deň. Namiesto toho ste pravdepodobne urobili hlavné číslo verzie a vydali ju každých pár mesiacov alebo týždňov, ak ste boli v obzvlášť agilnom tíme.
Poďme sa pozrieť na to, čo je to git-flow.
V git-flow majú dve vetvy nekonečnú životnosť. Po prvé, hlavný, ktorý by mal odrážať kód, ktorý je pripravený na nasadenie do vášho živého/produkčného prostredia.
Po druhé, máme našu rozvojovú pobočku. Táto pobočka by mala obsahovať najnovšie zmeny, ktoré sú pripravené pre ďalšie vydanie nášho softvéru. Keď sú zmeny vo vývoji pripravené na nasadenie do našej živej aplikácie, zlúčime ich do hlavnej vetvy a označíme ich číslom verzie, ktoré zodpovedá číslu vydania.
Mimo dvoch hlavných vetiev existujú tri typy podporných vetiev.
1. Funkcia
Vetva funkcie môže byť vytvorená iba z vývojovej vetvy. Musí sa zlúčiť späť do vývojovej vetvy. Pomenovanie môže byť čokoľvek popisujúce funkciu, na ktorej pracujete.
Keď je práca pripravená na ďalšie vydanie, zlúči sa späť do vývojovej vetvy, kde čaká na čas vydania.
2. Uvoľnite
Uvoľňovacie vetvy sú vytvorené z vývojovej vetvy a musia sa zlúčiť späť do vývojovej a hlavnej. Vetvu vydania pomenujete podľa konvencie release-x. V praxi to zvyčajne znamená, že pobočku pomenujete číslom vydania, ktoré plánujete použiť takto: release-2.2
Vetvu vydania používate ako spôsob na vykonanie poslednej prípravy na vydanie softvéru. Môže to zahŕňať zvýšenie počtu verzií súborov, zabezpečenie dokončenia prekladov alebo záverečnú kontrolu kódu.
3. Rýchla oprava
Vetva hotfix je vytvorená z hlavnej vetvy a používa sa na to, aby obsahovala zmeny, ktoré je potrebné okamžite riešiť v živej aplikácii. Môže ísť o chybu, ktorú treba opraviť, alebo o bezpečnostný problém, ktorý treba riešiť.
Keď je problém vyriešený a nasadený do vašej hlavnej pobočky, označíte kód správnym číslom verzie.
Najväčší dôvod, prečo tímy teraz nepoužívajú git-flow, je, že sa zmenil spôsob, akým vydávame softvér. Namiesto väčších verzií menej často môžete vydať zmenu aplikácie niekoľkokrát za deň. Viem, že prácu posúvam na stránky svojho klienta mnohokrát do týždňa hneď, ako je hotová. Nerobíme čísla verzií stránky, len ju neustále vylepšujeme.
Štandardné git-flow nie je určené na to, aby to vyhovovalo.
Github Flow
Druhá možnosť, ktorú mnohí využívajú, je Github Flow.
Jedným veľkým pravidlom Github Flow je, že akýkoľvek kód je na hlavnej vetve môže byť nasadený kedykoľvek, pretože je pripravený na produkciu.
Všetky vetvy sú vytvorené z hlavnej vetvy s popisným názvom pre čokoľvek, čo robíte.
Keď budete mať pripravené zmeny, vytvoríte a vytiahnuť žiadosť.
Po odoslaní žiadosti o stiahnutie môže tím, s ktorým spolupracujete, skontrolovať zmeny a poskytnúť spätnú väzbu. Ak sa požiadavka na stiahnutie považuje za pripravenú na zlúčenie, potom sa zlúči do hlavnej vetvy vášho projektu.
Jednou nevýhodou toku Github pre jedného vývojára alebo veľmi malý tím je, že administrácia požiadavky na stiahnutie môže vytvárať dodatočné náklady na riadenie projektu. Preto ich vo svojej práci nepoužívam.
Ako používam pracovné postupy Git s klientskymi projektmi
Pri mojej klientskej práci som zvyčajne jediný, kto denne píše kód pre projekt. Môj klient môže aktualizovať doplnky WordPress alebo zmeniť niektoré CSS, ale nevykonávajú žiadne veľké kódovacie práce. To znamená, že ak by som išiel s tokom Github, preskúmal by som svoje požiadavky na stiahnutie, ktoré spôsobujú iba ďalšie bolesti hlavy s riadením. Pozrime sa na systém, ktorý používam a ktorý má určitú podobnosť s tokom git-flow aj tokom Github.
Mám dve hlavné vetvy s názvom main a staging. Hlavná vetva sleduje akýkoľvek kód, ktorý práve beží na produkčnom mieste. Predbežná vetva sleduje všetko, čo sa testuje na skúšobnej lokalite, ktorú používame na testovanie zmien predtým, ako ich prenesieme na živú lokalitu.
Každá vetva je vytvorená z hlavnej vetvy. Nové funkcie sú pomenované takto: feature/32-new-feature. V tejto súvislosti číslo 32 zodpovedá číslu tiketu v našom systéme riadenia projektov a slová za ním sú krátkym popisom toho, na čom sa pracuje. Opravy chýb sa nazývajú podobne, bug/20-bug-name.
Každá vytvorená pobočka sa najskôr zlúči s našou fázou a potom, čo ju schváli klient alebo ju sám otestujem, sa zlúči do hlavnej vetvy. Pracovný postup môže vyzerať takto.
# zlúčiť funkciu do etapy
git merge feature/32-new-feature
# nasadiť a otestovať funkciu
git checkout main
git merge feature/32-new-feature
# nasadiť funkciu na živú stránku
Vo svojich projektoch mám nastavené nepretržité nasadzovanie, čo znamená, že kedykoľvek pošlem kód do main, automaticky sa presunie na živú stránku. Rovnaký proces je nastavený pre fázovú vetvu.
Ak by som pracoval s tímom, ktorý by mohol skontrolovať môj kód v pracovnom postupe žiadosti o stiahnutie, potom by som použil tento systém, pretože v tíme funguje dobre. Pre vývojárov, ktorí väčšinou pracujú sami, je to jednoducho réžia manažmentu, ktorá spomalí váš pracovný tok.
Pokročilé príkazy Git, ktoré používam
Teraz, keď už máme predstavu o tom, ako môžeme použiť Git v praktickom pracovnom postupe, poďme sa pozrieť na pokročilejšie príkazy, ktoré budú potrebné, aby sa to stalo. Každý z týchto príkazov používam aspoň niekoľkokrát týždenne, keď pracujem s kódom svojho zákazníka.
Aj keď budete používať GUI aplikáciu (niektoré dobré som spomenul v mojom poslednom príspevku na Git), stále je dôležité porozumieť tomu, čo sa deje na pozadí. Mnohokrát som musel pracovať cez terminál, aby som vyriešil problém, ktorý vytvorila aplikácia Git GUI.
Pridávanie zmien podľa riadku
Jediný príkaz, ktorý mi umožnil používať Git cez Terminál, bol git add -p. Kým som sa nenaučil tento príkaz, používal som GUI aplikácie, pretože by som robil zmeny vo svojom kóde, ale chcel som rozdeliť konkrétne riadky do rôznych commitov, aby som mohol vysvetliť, prečo som zmenu urobil. Aby som to urobil, použil som GUI na výber riadkov, ale git add -p vás prevedie interaktívnym rozhraním na pridanie zmien v kúskoch.
Používam to mnohokrát každý deň.
Sledujte vzdialenú pobočku Git
Ak sťahujete existujúce úložisko a máte vetvy ako main a staging, ktoré musíte sledovať, ale už existujú, musíte svojim verziám vetiev povedať, aby tieto verzie vetvy sledovali.
Existuje niekoľko spôsobov, ako to urobiť.
# Nastaviť proti prúdu pri stlačení na diaľkové ovládanie
git push -u origin staging
# Nastaviť proti prúdu
# predpokladá, že ste na vetve, ktorú chcete momentálne sledovať pomocou diaľkového ovládača
git branch -u origin/staging
git branch –set-upstream-to=origin/staging
# Ak nie ste na vetve, ktorú chcete sledovať, uveďte vetvu na konci
git branch –set-upstream-to=origin/staging staging
Uložte zmeny bez ich potvrdenia
Niekedy sa ocitnete uprostred nejakej práce, ktorá ešte nie je pripravená na vykonanie, ale musíte uložiť jej stav. Tu je užitočný git stash. Tento príkaz za vás odstráni zmeny odstránením zmien. Môžete ich získať späť pomocou git stash pop. Je tam niekoľko viac príkazov, aby bol skrýš užitočnýale tieto dva používam pravidelne.
Vytiahnite konkrétny Git Commit
Niekedy musíte do svojej aktuálnej práce vtiahnuť konkrétny záväzok. S čistou HEAD (zatiaľ ste nevykonali žiadne zmeny) môžete zadať konkrétny commit pomocou git cherry-pick . Môžete nájsť úplná dokumentácia o git cherry-pick tu.
Zahoďte zmeny, ktoré nepotrebujete
V určitom bode akéhokoľvek projektu urobíme zmeny a potom si uvedomíme, že to nefunguje a musíme ich jednoducho zrušiť a začať odznova. Namiesto toho, aby sme sa len pokúšali vrátiť späť, kým sa nedostaneme späť tam, kde chceme byť, môžeme použiť nasledujúci príkaz Git na odstránenie všetkých zmien, ktoré ešte neboli sledované.
git reset –hard
Vyššie uvedený príkaz obnoví váš kód späť na najnovšie potvrdenie vo vetve, na ktorej práve pracujete. Mohli by sme tiež použiť <#commitSHA> s týmto príkazom na obnovenie konkrétneho odovzdania, ak by sme sa chceli vrátiť do stavu pred posledným odovzdaním. Možno by ste to použili na obnovenie počiatočnej pokladne pobočky, pretože práca na celej pobočke nie je niečo, čo by ste si chceli ponechať, ale časť práce ste už sledovali.
Aby sme to posunuli ešte o krok ďalej, môžeme pomocou príkazu git clean zahodiť všetky súbory alebo adresáre, ktoré ešte neboli v git sledované.
git clean -fd: príznaky f a d hovoria git, aby zahodil súbory a adresáre, ktoré nie sú sledované.
Odstráňte vetvy
Každý týždeň alebo dva sa pozerám na výsledky príkazu git status a zisťujem, že mám príliš veľa vetiev, aby som rozumne pochopil, čo sa deje v mojom úložisku. To znamená, že môžem odstrániť všetky vetvy, ktoré zodpovedajú lístkom, ktoré boli vyriešené pomocou nasledujúcich príkazov.
# odstráni lokálnu verziu
git vetva -d $pobočka
#odstráni vetvu na mojom diaľkovom ovládači
git push $remotename –delete $branchname
Použite kontrolu verzií
Aj keď možno nie ste odborníkom na všetky príkazy Git, ktoré budete používať, jednu dôležitú vec si musíte zapamätať mali by ste používať správu verzií. Aj keď ste jediná osoba, ktorá pracuje na projekte, používanie Gitu a pracovného postupu Git vám pomôže udržať si projekty organizované. Po napísaní kódu, ktorý nefungoval, nebudete musieť stlačiť CTRL + Z, kým neresetujete svoju prácu.
Budete môcť dôverovať svojmu systému a pokračovať v produkovaní práce pre svoje projekty.