Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Histórie a princípy

Git je podľa wiki "distribuovaný systém správy verzií. Čo to ale v skutočnosti znamená? A prečo by som ho mal používať? Na to sa pozrieme v nasledujúcom článku.

Git logo - Git

Trocha povinné 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 Linux kernelu. Pôvodne bol Linux kernel vyvíjaný za pomoci Bitkeeperu, ale spoločnosť tento produkt spoplatnili a tak boli vývojári Linuxe prinútení vyvinúť vlastný nástroj pre 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 zabezpečiť každému vývojári maximálne pohodlie (to znamená rýchle naučenie, nevyžaduje pripojenie k internetu a podporuje nelineárne vývoj).

Systém správy verzií

Čo nám teda vlastne Git prináša? Môžeme jednoducho zákazníkom publikovať náš projekt vo verziách, ktoré nám vyhovujú. Zákazníkom to bude pripadať iba ako ďalšie verzie, aj keď medzi predchádzajúcou a aktuálnou verziou môže byť napríklad 10 vývojárskych verzií. Dáva nám jednoduchý prístup k celej histórii projektu. Môžeme sa ľubovoľne v histórii presúvať a máme prehľad o tom, kto vytvoril akú časť kódu a čo sa konkrétne zmenilo. Vďaka vetvenia (pozri ďalšie kapitoly) 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ť znovu. Projekt zostane po celý čas v rovnakom stave.

Princípy gitu

Prvou dôležitou vecou v gitu je spôsob ukladania súborov. Git každý súbor uloží iba raz a potom ukladá len tzv. Snapshoty. V každom COMMIT (pomyselný uzol systému) sú uložené všetky súbory ako snapshot. To dáva GITU výhody oproti ostatným verziovacími 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 poskytne rovnaké pohodlie. Veľkosť repozitára pritom zostane prakticky rovnaká. Potom už závisí viac od formátu súboru, či sa po malej zmene zmení celý binárny súbor, alebo len časť.

Ďalšou dôležitou vecou je, že každá operácia, ktorú urobíte, je najskôr lokálne. Než poviete, že je to nevýhoda, pretože sa medzi vá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ť jednoduché opravy. Akonáhle už niečo publikujete, nie je možnosť to zmeniť, pretože niekto iný už váš kód môže mať stiahnutý a Git nenecháva žiadne zadné vrátka k ostatným užívateľom. Vďaka lokálnemu úložisku máte 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 nie je prakticky nič, čo by vám Git nedovolil bez pripojenia k internetu. Môžete pracovať na svojom lokálnom úložisku a až po pripojení môžete všetko vziať a umiestniť na internet.

Do gitu je tiež veľmi silne zakomponovaná integrita. Pre každý súbor alebo priečinok Git spočíta kontrolný súčet, ktorý sa nazýva SHA-1 hash (40-tich miestne hexadecimálne číslo). Nemôžete 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žete riadok, Git len dostane informáciu o pridanie "ničoho" do súboru. Po vykonaní COMMIT už je veľmi zložité súbor poškodiť do takého stavu, aby nešiel obnoviť. Nenastanú ak nejaké extrémne situácie (poškodenie harddisku alebo keby sa v úložisku prehrabával niekto neoprávnený) dáta sú úplne v bezpečí. Keď navyše repozitár nahráte na nejaký server, ošetríte aj tieto situácie.

Štyri pracovné priestory

Git pracuje v troch vrstvách. Ukázané to je na nasledujúcom obrázku.

Graf stavov súboru - Git

Working directory je vaša zložka, v ktorej pracujete. Nikde však nie je prikázané, že všetky súbory vo vašej zložke musí byť zároveň v úložisku. Git vás nenúti k určitému postupu práce. Ako budete pracovať je čisto na vás, Git sa prispôsobí. Pre súbory, ktoré chcete aby Git spracoval, slúži staging area. Staging area je taká virtuálny priečinok pre Git. Všetko, čo sa do nej dostane, bude v nasledujúcom COMMIT prenieslo do lokálneho repozitára. Lokálne repozitár je vaša história projektu, na ktorom pracujete. V ňom sú uložené všetky snapshoty a všetky predchádzajúce verzie systému. A ako už bolo povedané, všetko čo sa dostane do repozitára už prakticky nie je možné zmazať. Posledným článkom je vzdialený repozitár (remote repo). Na vzdialený repozitár nahrávate lokálne repozitár. Tu platia podmienky, bez ktorých sa akcie nevykoná, ale o tom až v niektorom z ďalších dielov.

Cesta ide samozrejme absolvovať aj opačne - stiahnuť súbory zo vzdialeného repozitára a následne tento stiahnutý repozitár pridať do lokálneho. Ide obnoviť pracovné zložku do stavu, v akom bol aktuálny stav vzdialeného repozitára, ale ide aj obnoviť zložku do stavu pri jednom z COMMIT (teda pozrieť sa ako zložka vyzerá v tom určitom COMMIT).

Kto Git používa

Git sa stal jedným z najviac používaných Verziovací systémov dnešnej doby. Tu uvádzam pár projektov, ktoré používajú Git ako verzovacie systém.

Ako ide vidieť, Git používajú aj veľké projekty, na ktorých pracujú stovky ľudí. To však neznamená, že Git nie je vhodný pre menšie projekty. Poslúži rovnako tak dobre, len miesto päťstovky COMMIT budete mať napríklad len 10. Vďaka svojej filozofii možné uplatniť úplne všade.

Vzdialenej repozitára

Vzdialené repozitára slúži na uloženie vášho lokálneho repozitára pre ostatných užívateľov. Tí si potom môžu váš kód stiahnuť a sami na ňom pracovať. Dôležité je si uvedomiť, že akonáhle niečo umiestnite na vzdialený repozitár, už nie je možnosť to zmeniť, pretože neviete kto si váš repozitár už stiahol. U človeka, ktorý si už naklonoval váš repozitár, nemáte možnosť jeho repozitár zmeniť.

Medzi najznámejšie servery patria:

Rozdiely medzi servery sú služby, ktoré poskytujú. Závisí to od toho, či poskytujú repozitára len verejné (každý ich môže nájsť a stiahnuť) alebo privátne (stiahnuť ich môžu iba overenie užívatelia) a prípadne koľko členov môže pristupovať k privátnemu úložisku. Čo sa u free verzií týka, GitHub povoľuje len verejné repozitára, GitLab a Bitbucket majú vo verzii zadarmo 5 užívateľov pre súkromný repozitár. V budúcom dieli sa zameriame na inštaláciu a vytvorenie repozitára.


 

Všetky články v sekcii
Git
Preskočiť článok
(neodporúčame)
Git - Inštalácia a vytvorenie repozitára
Článok pre vás napísal Patrik Valkovič
Avatar
Užívateľské hodnotenie:
1 hlasov
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu (NodeJS).
Aktivity