Veľkonočná akcia je tu a s ňou aj extra kredity ZADARMO na náš interaktívny e-learning. Dobij si teraz kredity a posuň sa vo svojej kariére vpred!
Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

1. diel - Git - História a princípy

V dnešnom tutoriáli Git si predstavíme verzovací nástroj Git. Zoznámime sa s jeho históriou, princípmi a základnými stavmi súborov. Tiež si povieme, kto a kde Git používa a kde nájsť Git servery.

Minimálne požiadavky kurzu

Na tento kurz nepotrebujete žiadne špeciálne znalosti, stačí znalosť bežnej práce s počítačom :)

Čo je to Git?

Git je distribuovaný verzovací systém určený na sledovanie zmien v súboroch a koordináciu práce medzi ľuďmi na rôznych verziách týchto súborov. Jednoducho povedané, je to nástroj, ktorý umožňuje vám a vášmu tímu pracovať na projektoch a udržiavať prehľad o tom, čo sa zmenilo, kto to urobil a kedy.

Git zaznamenáva históriu zmien vo forme commitov, ktoré obsahujú snímku stavu vášho projektu v danom okamihu. Vďaka tomu môžete kedykoľvek spätne skontrolovať, ako sa váš projekt vyvíjal a vrátiť sa k predchádzajúcim verziám, pokiaľ je to nutné.

Jedným z najvýznamnejších prvkov Gitu je jeho distribuovaný charakter. Každý autor má svoju vlastnú kópiu celého repozitára (súborov a histórie) na svojom počítači. To umožňuje nezávislú prácu a následne zlúčenie zmien z rôznych kópií repozitára.

Git je široko používaný vo vývoji softvéru, ale môže sa využívať aj na správu verzií akýchkoľvek textových alebo binárnych súborov. Je to kľúčový nástroj pre spoluprácu medzi vývojármi a udržiavanie kvalitného a štruktúrovaného kódu alebo obsahu projektu.

Prečo používať Git?

Existuje niekoľko dôvodov, prečo používať Git ako verzovací systém na správu vašich projektov:

  • Sledovanie zmien: Git vám umožňuje sledovať a ukladať každú zmenu vykonanú vo vašom projekte. To znamená, že keď niečo nefunguje správne alebo sa chcete vrátiť k predchádzajúcej verzii, máte históriu zmien po ruke.
  • Spolupráca: Ak pracujete s tímom alebo s ďalšími vývojármi, Git uľahčuje spoluprácu na rovnakých súboroch. Každý člen tímu môže pracovať na svojej vlastnej verzii a zmeny je možné následne ľahko zlúčiť.
  • Vetvenie: Git umožňuje vytvárať odnože (vetvy) projektu, na ktorých môžete pracovať nezávisle. To je užitočné pri vývoji nových funkcií alebo opráv chýb bez toho, aby sa to premietlo do hlavného projektu.
  • Spätné vrátenie zmien: Ak vykonáte niečo zle alebo zistíte, že nová funkcia spôsobuje problémy, môžete sa jednoducho vrátiť k predchádzajúcemu stavu projektu.
  • Ochrana dát: Git ukladá celú históriu projektu, takže aj keby došlo k chybe alebo zlyhaniu disku, vaše dáta sú v bezpečí.
  • Podpora pre tímy: Git umožňuje efektívne koordinovať prácu väčších tímov, uľahčuje sledovanie, kto a kedy vykonal zmeny a rieši problémy s konfliktmi.
  • Open source a popularita: Git je open source nástroj so širokou komunitou používateľov a aktívnym vývojom. To znamená, že je k dispozícii bezplatne a vývoj je živý.
  • Flexibilita: Git je široko používaný nielen vo vývoji softvéru, ale aj v ďalších oblastiach, ako sú písanie prác, správa obsahu webu a ďalšie.
  • Rýchlosť: Git je navrhnutý tak, aby bol rýchly a efektívny. Záznamy zmien sú kompaktné, čo znamená menšie nároky na úložisko.

História a princípy

Git je podľa Wikipédie distribuovaný systém správy verzií. Čo to ale v skutočnosti znamená? A prečo by sme ho mali používať?

Git logo - Git

Trocha povinnej histórie

Prvá oficiálna verzia Gitu bola uvoľnená 7. apríla 2005. Otcom Gitu je Linus Torvalds, jeden z hlavných vývojárov linuxového jadra. Pôvodne bolo linuxové jadro vyvíjané pomocou Bitkeeperu, ale spoločnosť tento produkt spoplatnila, a tak boli vývojári Linuxu nútení vyvinúť vlastný nástroj na správu verzií. Tejto úlohy sa ujal už spomínaný Linus Torvalds.

Git je prispôsobený na to, aby dokázal pracovať s veľkými projektmi (jadro Linuxu je toho dôkazom) a dokázal zaistiť každému vývojárovi tieto výhody:

  • Každý autor pracuje na svojej kópii projektu. To znamená, že môžu pracovať offline a vykonávať zmeny bez nutnosti pripojenia k internetu alebo priameho zásahu do projektu.
  • Jeho kompaktný spôsob ukladania zmien a znížená réžia znamenajú rýchlejšie operácie a menšie nároky na úložisko.
  • Jedna z kľúčových výhod Gitu spočíva v jeho schopnosti vytvárať odnože (vetvy) projektu. To umožňuje vývojárom pracovať na rôznych funkciách alebo opravách zároveň bez toho, aby narušili hlavnú vývojovú verziu projektu.

Celkovo povedané, Git zlepšil efektivitu, organizáciu a spoluprácu vývojárov. Jeho výhody ako distribuovaného verzovacieho systému sú cenené nielen v softvérovom priemysle, ale aj v mnohých ďalších odvetviach.

Distribuovaný systém správy verzií

Najprv si vysvetlíme jednotlivé časti pojmu distribuovaný systém správy verzií.

Distribuovaný

Zdrojový kód je rozdistribuovaný medzi jednotlivých vývojárov. Každý autor má vlastnú kópiu projektu a je schopný pomocou svojej lokálnej kópie projekt skompilovať a spustiť. Keďže má každý autor svoju lokálnu kópiu, môže pracovať offline a nezávisle od ostatných. Svoje zmeny tak publikuje, až keď sa tak rozhodne.

Opakom distribuovaného je centralizovaný, ktorým je napríklad SVN. Konkurenčný SVN má jeden server a pokiaľ chce autor vykonávať zmeny, musí byť k tomuto serveru pripojený.

Systém

Git sa môže javiť ako súbor príkazov, ktoré používame. Vnútri je však samostatným systémom, ktorý je nezávislý od ďalších nástrojoch (má napríklad vlastný garbage collector). Git je možné skompilovať pre akúkoľvek platformu a nie je závislý od žiadnych externých knižníc.

Správy

Git pomáha so správou projektu nezávisle od jeho veľkosti. Projektom môže byť menší textový dokument ako napríklad bakalárska či diplomová práca, ale aj jadro operačného systému.

Verzií

Stav projektu ukladáme do verzií. Git poskytuje podporu pre spätnú rekonštrukciu zmien a ľahký prechod medzi verziami. To znamená, že sa k súborom v danej verzii môžeme kedykoľvek vrátiť. Dáva nám jednoduchý prístup k celej histórii projektu. V histórii sa môžeme pohybovať a máme prehľad o tom, kto vytvoril akú časť kódu a čo konkrétne sa zmenilo. V prípade, že nejaká zmena pokazí fungovanie celého projektu, vieme danú zmenu rýchlo vrátiť späť.

Využitie v praxi

Čo nám teda vlastne Git prináša? Zákazníkom môžeme jednoducho publikovať náš projekt vo verziách, ktoré nám vyhovujú. Zákazníkom to bude pripadať iba ako ďalšia verzia, aj keď medzi predchádzajúcou a aktuálnou verziou môže byť napríklad 10 vývojárskych verzií.

Vďaka vetveniu môžeme vytvárať novú funkcionalitu bez toho, aby to malo akýkoľvek vplyv na zvyšok projektu. Ak zlyhá, nie je nič jednoduchšie, než tento pokus nezahrnúť do projektu, vrátiť sa na pôvodné miesto v histórii a začať odznova. Projekt zostane celý čas v rovnakom stave.

Git však nie je obmedzený iba na správu zdrojového kódu. Jeho schopnosti vo verzovaní sú užitočné aj pri písaní odborných prác, ako sú bakalárske alebo diplomové práce. Môžeme ho teda pohodlne využiť aj v oblastiach mimo vývoja softvéru.

Princípy Gitu

Repozitár (tiež nazývaný repo) je základným stavebným prvkom systému správy verzií Git. Ide o miesto, kde sú uložené a spravované všetky súbory, história a metadáta projektu. Repozitár môže obsahovať kompletný záznam o zmenách v kóde, súboroch, priečinkoch a ďalších artefaktoch projektu.

Repozitár v Gite slúži na ukladanie a udržiavanie celej histórie projektu. Každý commit (uložený stav projektu v určitom okamihu vývoja) je zaznamenaný v repozitári spolu s informáciami o tom, kto vykonal zmenu, kedy a čo konkrétne bolo zmenené. Vďaka tomu môžete sledovať vývoj projektu v čase, prechádzať medzi rôznymi verziami a zisťovať, kto a kedy pridal alebo upravil určité časti kódu.

Prvou dôležitou vecou v Gite je spôsob ukladania súborov. Git každý súbor uloží iba raz a potom ukladá len tzv. snapshoty. V každom commite sú uložené všetky súbory ako snapshot. To dáva Gitu výhody oproti ostatným verzovacím systémom (Perforce, CVS, Bazaar), ktoré ukladajú súbor vždy pri jeho zmene.

Okrem toho Git ukladá všetky súbory binárne. Je teda možné ukladať aj netextové súbory (napríklad obrázky) a Git tak poskytne rovnaké pohodlie. Veľkosť repozitára pritom zostane prakticky rovnaká. Potom už viac závisí od formátu súboru, či sa po malej zmene zmení celý binárny súbor, alebo iba časť.

Ďalšou dôležitou vecou je, že každá operácia, ktorú urobíme, je najskôr lokálna. Predtým, ako povieme, že je to nevýhoda, pretože sa medzi nás a server pridá ďalší článok reťazca, poďme sa nad tým najskôr zamyslieť. V prvom rade nám to dáva možnosť jednoduchej opravy. Akonáhle už niečo publikujeme, nie je možnosť to zmeniť, pretože niekto iný už náš kód môže mať stiahnutý a Git nenecháva ostatným používateľom žiadne zadné vrátka. Vďaka lokálnemu repozitáru máme možnosť po sebe kód dodatočne opraviť a až potom ho umiestniť na internet.

Ďalšia výhoda, ktorá z tohto prístupu vyplýva je, že neexistuje prakticky nič, čo by vám Git nedovolil bez pripojenia k internetu. Môžeme pracovať na svojom lokálnom repozitári a až po pripojení môžeme všetko vziať a umiestniť na internet.

Do Gitu je tiež veľmi výrazne zakomponovaná integrita. Pre každý súbor alebo zložku Git spočíta kontrolný súčet, ktorý sa nazýva SHA-1 hash (40-miestne hexadecimálne číslo). Nemôžeme teda zmeniť alebo poškodiť súbor bez toho, aby o tom Git nevedel. Git interne neukladá súbory podľa mena, ale práve podľa tohto kontrolného súčtu.

Git iba pridáva dáta. Aj keď vymažeme riadok, Git iba dostane informáciu o pridaní „ničoho“ do súboru. Po vykonaní commitu už je veľmi zložité súbor poškodiť do takého stavu, aby nešiel obnoviť. Ak nenastanú nejaké extrémne situácie (napríklad poškodenie pevného disku) dáta sú úplne v bezpečí.

Štyri pracovné priestory

V kontexte práce s Gitom sa celý proces správy verzií skladá zo štyroch hlavných fáz, z ktorých každá má svoju špecifickú úlohu. Tieto fázy zahŕňajú pracovnú zložku (working directory) a ďalšie dôležité aspekty, ktoré umožňujú efektívnu a koordinovanú spoluprácu pri verzovaní projektov. Pre lepšiu predstavu je možné tento proces zobraziť nasledujúcim grafom:

Graf stavov súboru - Git

Poďme si vrstvy popísať.

  • Pracovná zložka (working directory): Táto fáza zahŕňa aktuálnu verziu vášho projektu. Je to miesto, kde vykonávame úpravy a editáciu projektu. V tomto priečinku môžete vytvárať, mazať a upravovať súbory podľa svojich potrieb.
  • Staging Area: Po vykonaní určitých zmien v pracovnom priečinku môžeme špecificky vybrať súbory, ktoré chceme zaradiť do ďalšieho commitu. Tento priestor slúži ako „staging area“ alebo „index“, kde si vyberáme, ktoré zmeny budú súčasťou nasledujúceho commitu.
  • Lokálny repozitár: Keď sme vybrali súbory v staging area, môžeme vykonať commit, čo je trvalé uloženie týchto zmien do lokálneho repozitára. Tento repozitár obsahuje kompletnú históriu nášho projektu vrátane všetkých zmien a commitov, ktoré sme urobili.
  • Vzdialený repozitár: Táto fáza zahŕňa repozitár umiestnený na vzdialenom serveri. Po uložení zmien do nášho lokálneho repozitára môžeme tieto zmeny poslať/nahrať na vzdialený server, aby boli dostupné pre ostatných spolupracovníkov alebo používateľov. Tým sa umožňuje zdieľanie a koordinácia práce medzi rôznymi vývojármi.

Cesta sa dá samozrejme absolvovať aj opačne – stiahnuť súbory zo vzdialeného repozitára a následne tento stiahnutý repozitár pridať do lokálneho. Pracovnú zložku môžeme obnoviť do stavu, v akom bol aktuálny stav vzdialeného repozitára. Zložku sa dá obnoviť aj do stavu pri jednom z commitov (teda pozrieť sa, ako zložka vyzerá v tom určitom commite).

Poskytovatelia vzdialených repozitárov

Ako už bolo povedané vzdialené repozitáre sú umiestnené na serveri a umožňujú ho zdieľať s ostatnými užívateľmi. Týmto spôsobom si môžu stiahnuť náš kód a prispievať k nemu svojimi vlastnými zmenami. Je dôležité uvedomiť si, že akonáhle náš repozitár umiestnime na vzdialený server, strácame nad ním určitú mieru kontroly. Vedomosť o tom, kto a kedy si náš repozitár stiahol, nie je vždy zaručená. Akonáhle niekto naklonuje náš repozitár už nemôžeme zmeniť verziu toho, čo si stiahol.

Existuje mnoho platforiem, ktoré nám umožňuje nahrať náš repozitár. Medzi najznámejšie platformy pre vzdialené repozitáre patria:

Tieto platformy sa líšia v ponúkaných službách. Všetky však umožňujú vytváranie verejných repozitárov (prístupných a sťahovateľných kýmkoľvek) aj privátnych repozitárov (s obmedzeným prístupom iba pre overených užívateľov). Rovnako sa líšia v kapacite repozitára a v niektorých prípadoch aj v maximálnom počte užívateľov, ktorí môžu mať prístup k privátnemu repozitáru.

Existuje aj možnosť si "hosťovať" náš vlastný vzdialený repozitár na našom serveri pomocou Gitea

Git v známych projektoch

Git sa stal jedným z najviac používaných verzovacích systémov dnešnej doby. Uveďme si pár projektov, ktoré používajú Git ako verzovací systém:

Ako možno vidieť, Git sa používa v projektoch, na ktorých pracujú stovky až tisíce ľudí. To však neznamená, že Git nie je vhodný pre menšie projekty. Jeho využitie je flexibilné a používa sa pre rôzne projekty – od projektov s niekoľkými commitmi až po tie s desiatkami či stovkami. Pre jednotlivcov môže byť Git výborným zálohovacím nástrojom. Vďaka svojej univerzálnosti a flexibilite má využitie takmer všade, kde sa pracuje so zmenami a správou kódu.

V ďalšej lekcii, Git - Inštalácia, si popíšeme Git klientov a ich integráciu do vývojových prostredí. Spomenieme si inštaláciu na Linuxe a podrobne si prejdeme inštaláciu na Windowse.


 

Ako sa ti páči článok?
Pred uložením hodnotenia, popíš prosím autorovi, čo je zleZnakov 0 z 50-500
Všetky články v sekcii
Git
Preskočiť článok
(neodporúčame)
Git - Inštalácia
Článok pre vás napísal Patrik Valkovič
Avatar
Užívateľské hodnotenie:
49 hlasov
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu (NodeJS).
Aktivity