Git, GitHub a GitLab: Čo to je a aké majú výhody?

Git a GitHub sú služby, s ktorými sa pri programovaní určite stretneš. Git sa v priebehu rokov stal celosvetovým štandardom určeným pre správu verzií, ktorý využívajú milióny ľudí. Čo to však znamená v praxi a aké výhody ti táto služba môže priniesť?

Čo je Git?

Git je distribuovaný systém na správu verzií, ktorý sleduje zmeny v akejkoľvek súprave počítačových súborov. Zvyčajne sa využíva na koordináciu práce medzi viacerými programátormi, ktorí pracujú na vývoji nejakého softvéru. Git zaisťuje vývojárom rýchlosť, jednoduchú prácu a podporu distribuovaných, nelineárnych pracovných tokov.

To, že je Git distribuovaný systém znamená, že klon projektu predstavuje kompletné úložisko správy verzií. Vďaka tomu dokáže Git uľahčiť prácu nielen vývojárom, ktorí sa nachádzajú na jednom mieste, ale aj tým, ktorí pracujú vzdialene.

Vývojári po každej úprave synchronizujú svoju kópiu s kópiou na serveri, čo zaisťuje, že bude k dispozícii aj pre ďalších členov tímu pracujúcich na danom projekte. Ostatní developeri môžu okrem toho sledovať aj kompletnú históriu a ostatné uložené verzie.

So systémom Git si poradí ako profesionál, tak aj začiatočník
So systémom Git si poradí ako profesionál, tak aj začiatočník.

Obľuba Gitu rástla posledné roky najmä kvôli flexibilite, ktorú poskytuje. Okrem toho je populárny aj vďaka skutočnosti, že je bezplatným softvérom s otvoreným zdrojovým kódom a distribuuje sa iba pod licenciou GPL-2.0.

Vedel si, že...

GPL je všeobecná verejná licencia, ktorá koncovým používateľom zaručuje štyri výhody – spúšťať, študovať, zdieľať a upravovať softvér. Napísal ju Richard Stallman v roku 1989.

História Gitu

História Gitu siaha do roku 2005. V tomto období prestali mnohí vývojári využívať program BitKeeper, ktorý bol obľúbený od roku 2002. Dôvodom boli najmä problémy s autorskými právami.

Jeden z vývojárov, Linus Torvalds, hľadal distribuovaný systém, ktorý by mohol používať rovnako ako BitKeeper. Žiadny z dostupných bezplatných systémov však nespĺňal jeho potreby.

Torvalds mal presné požiadavky, ktoré musel systém spĺňať. Jednou z nich bolo, že oprava by v rámci systému nemala trvať dlhšie ako tri sekundy a systém by mal podporovať podobný pracovný postup, ako má BitKeeper.

Keďže Torvaldsove požiadavky nesplnil ani jeden softvér, ktorý našiel, rozhodol sa, že napíše svoj vlastný. Vývoj Gitu začal 3. apríla 2005, pričom prvé testovanie prebehlo už 29. apríla 2005.

Po otestovaní Gitu odovzdal Torvalds údržbu Gitu Juniovi Hamanovi, hlavnému prispievateľovi projektu, ktorý bol následne zodpovedný za vydanie verzie 1.0. Tá uzrela svetlo sveta 21. decembra 2005.

Vedel si, že...

… Linus Torvalds pomenoval Git po sebe? Git totiž v britskej angličtine znamená „nepríjemná osoba”. Torvalds k tomu raz povedal: „Som egoista a všetky svoje projekty pomenúvam po sebe. Najprv Linux, teraz Git.”

Základy Gitu

Vždy, keď Git použiješ a uložíš nejaké zmeny, systém vytvorí potvrdenie. Potvrdenie predstavuje snímku všetkých súborov v danom okamihu. Každé potvrdenie vytvára odkazy na ďalšie potvrdenie, čím sa tvorí prehľadný a praktický graf histórie vývoja.

Vďaka histórii vývoja máš možnosť kedykoľvek sa vrátiť k predchádzajúcej verzii, skontrolovať ju a zistiť napríklad, kde nastala chyba.

Vetvy v Gite

Práca v Git prebieha na základe takzvaných vetví. Každý vývojár má svoju vlastnú vetvu, čiže úložisko kódu mimo toho hlavného. Po tom, ako sa práca vo vetve dokončí, môžeš ju zlúčiť späť do hlavnej vetvy alebo priamo do kmeňa.

Súbory v Gite

Okrem vetiev je dôležité vedieť aj o súboroch, ktoré môžu byť v jednom z troch stavov, a to:

  • zmenené,
  • fázované,
  • potvrdené.

V prípade prvého stavu sa zmeny nachádzajú len v pracovnom adresári. Nie sú súčasťou potvrdenia či histórie vývoja. Aby sa však mohli dostať do histórie, vývojár ich musí fázovať.

Keď je vývojár so svojou prácou aj fázovaním spokojný, môže všetko zahrnúť do poslednej fázy, ktorou je potvrdenie. Potvrdenie sa následne stane súčasťou histórie.

Zmeny v Gite

Git sa od mnohých ďalších systémov, ako napríklad CVS, Subversion či Perforce, odlišuje tým, akým spôsobom pozerá na dáta. Väčšina systémov ukladá jednotlivé informácie ako zoznamy zmien. Ide pre ne len o súpravu niekoľkých súborov a zmien v určitom čase.

V rámci Git je to však iné. Na dáta nazerá ako na kolekciu snímok, ktoré sú súčasťou systému, respektíve súboru. Vždy, keď v systéme niečo potvrdíš a uložíš, spraví sa fotografia alebo screenshot toho, ako vyzerajú súbory v určitom čase.

Git následne ukladá odkaz na danú snímku a v prípade, že sa po vykonaní ďalšej práce súbor nezmení, znova ho neukladá. Odkazuje na predchádzajúci rovnaký súbor.

V praxi to znamená, že Git kontroluje každú jednu verziu, ktorú vyhotovíš, na rozdiel od iných systémov, ktoré len kopírujú predchádzajúce verzie.

Lokálna práca

Zaujímavosťou je, že Git na svoju prácu využíva najmä lokálne súbory a zdroje. Informácie z iných miest, napríklad z iných počítačov, nepotrebuje. Inak povedané, celú históriu projektu máš uloženú na lokálnom disku, vďaka čomu sú jednotlivé zmeny a úpravy okamžité.

Ak sa teda rozhodneš, že chceš vidieť verziu projektu spred mesiaca alebo dvoch, Git ti ju načíta v priebehu niekoľkých sekúnd. Nemusí totižto sťahovať jednotlivé údaje zo vzdialeného serveru.

To, že Git pracuje vo veľkej miere offline, má aj ďalšie výhody. Na to, aby si robil nejaké zmeny alebo pracoval na svojom projekte, nepotrebuješ pripojenie na internet. Svoju prácu môžeš preto robiť kdekoľvek sa nachádzaš, či už sedíš do vlaku, alebo si v kaviarni, kde nechceš využívať verejné Wi-Fi pripojenie.

Prečo používať Git?

Na väčšine projektov pracuje v súčasnosti paralelne niekoľko vývojárov. Aby sa dokázali navzájom prispôsobiť práci toho druhého, prípadne, aby nerobili to isté alebo aby nenastali zbytočné konflikty v kóde, je dôležité, aby využívali systém na správu verzií.

Okrem systému na správu verzií je však potrebný aj systém kontroly verzií, ktorý umožňuje sledovať jednotlivé zmeny a vrátiť sa k staršej verzii kódu. Toto všetko a ešte oveľa viac dokáže poskytnúť praktický nástroj Git, ktorý je bezplatný a rýchly.

Git má množstvo skvelých výhod
Za stiahnutie systému Git nemusíš nič platiť.

K ďalším výhodám tohto systému patria:

  • Silná podpora komunity – keďže Git je open-source systém, využíva ho veľké množstvo ľudí po celom svete. Tí spolu diskutujú a odpovedajú na otázky na rôznych fórach či v skupinách na Facebooku. Ak by ti teda nebolo niečo jasné, neboj sa ich opýtať.
  • Jednoduchosť – používanie Gitu nie je náročné a často je súčasťou programovania pre začiatočníkov. Študovanie postupov a toho, ako využiť systém vo svoj prospech, uľahčuje množstvo informácií dostupných na internete. Spolu s odbornými článkami môžeš pozerať voľne dostupné videá či čítať rôzne knihy, kde nájdeš bližšie informácie.
  • Súbežný vývoj – vďaka Gitu môže mať každý vývojár svoju vlastnú kópiu projektu, na ktorej pracuje.
  • Flexibilita – tým, že Git podporuje paralelnú prácu na jednom projekte, zaručuje vysokú úroveň flexibility pre celý tvoj tím.
  • Žiadosť o prijatie zmien – mnohí vývojári oceňujú aj žiadosť o prijatie zmien, pomocou ktorej môžu diskutovať o zmenách kódu s celým tímom ešte predtým, ako sa zlúčia do hlavnej vetvy. Takýmto spôsobom sa zaisťuje vysoká kvalita kódu a zvyšuje sa znalosť celého tímu. V rámci tejto funkcie je k dispozícii možnosť písať komentáre, prechádzať zmeny súborov, kontrolovať potvrdenia či hlasovať o rozhodnutiach schválenia kódu.
  • Bezplatnosť – zabúdať nesmieme ani na to, že Git je k dispozícii bezplatne pre každého, kto ho potrebuje. Pri práci s ním tak nemáš žiadne výdavky navyše.

Git a programovanie v Java

Programovacích jazykov je v súčasnosti veľké množstvo. Ak si zvolíš programovanie v Java, a pritom túžiš používať Git, vhodnou voľbou je verzia Eclipse JGit. Ide o licencovanú a ľahšiu Javu, ktorá implementuje systém riadenia verzií Git. Používanie tejto verzie Javy je jednoduché a rýchle, vďaka čomu zbytočne nekomplikuje prácu.

Existuje niekoľko spôsobov, ako prepojiť svoj projekt s JGit a začať písať kód. Najjednoduchším z nich je použiť nástroj Maven. Integráciu dosiahneš pridaním <dependencies> do súboru pom.xml. Výsledok by mal vyzerať takto:

<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>4.6.0.201612231935-r</version>
</dependency>

Najnovšiu verziu JGit nájdeš v úložisku Maven Central. Po pridaní <dependencies> do súboru pom.xml by mal Maven automaticky získať a použiť z knižnice JGit všetko, čo budeš potrebovať na prácu.

Git umožňuje aj programovanie v Jave
Verzia JGit je bezplatná.

Následne musíš vytvoriť úložisko, ktoré spravíš použitím príkazu init:

Git git = Git.init().setDirectory(„/path/to/repo“).call();

Ak chceš úložisko kopírovať, použi príkaz cloneRepository:

Git git = Git.cloneRepository()
.setURI(„https://github.com/eclipse/jgit.git“)
.setDirectory(„/path/to/repo“)
.call();

V JGit môžeš využívať aj rôzne objekty, ako napríklad blob, commit či tag. Každý má pritom svoj vlastný príkaz.

Vedel si, že...

… vďaka znalosti Git si môžeš otvoriť dvere k novým pracovným príležitostiam v IT svete? Ak sa teda stále rozhoduješ, či ísť týmto smerom, možno ťa presvedčí plat programátora, ktorý je v porovnaní s inými profesiami oveľa vyšší.

Git a GitHub

Spolu so systémom Git sa môžeš stretnúť aj s označením GitHub. Tieto dva pojmy však označujú dve odlišné veci, preto je dôležité, aby si si ich nemýlil. GitHub je poskytovateľom internetového hostingu, ktorý je určený na vývoj softvéru a správu verzií, pričom využíva nástroj Git.

GitHub ponúka distribuovanú správu zdrojového kódu prostredníctvom systému Git. Okrem toho používateľom poskytuje aj ďalšie funkcie. K nim patria napríklad:

  • reguluje prístup,
  • sleduje nahlásené chyby,
  • sleduje požiadavky na nové funkcie,
  • spravuje úlohy,
  • podporuje priebežnú integráciu.

GitHub desktop taktiež poskytuje bezplatný hosting pre projekty typu open-source a od roku 2019 umožňuje bezplatne ukladať súkromné repozitáre.

S vývojom GitHubu sa začalo v roku 2008, keď bol aj spustený. Jeho vývojármi a zakladateľmi boli Tom Preston-Werner, Chris Wanstrath, PJ Hyett a Scott Chacon. Po desiatich rokoch od spustenia sa GitHub stal dcérskou spoločnosťou Microsoftu.

Git vs. GitHub vs. GitLab

Ďalší systém, ktorý využíva Git, je GitLab. Ide o webový Git repozitár s wiki, čiže webmi, ktoré umožňujú používateľom pridávať obsah a s podporou sledovania chýb. Rovnako ako GitHub, aj GitLab poskytuje hosting, no okrem toho dovoľuje, aby sa softvér používal na serveroch tretích strán.

GitLab napísali Dmitriy Zaporozhets a Sytse „Sid“ Sijbrandij v jazyku Ruby. Krátko po uvedení na trh sa GitLab rozdelil na dva rôzne nástroje:

  • GitLab CE: Community Edition
  • GitLab EE: Enterprise Edition

Jednotlivé nástroje sa od seba odlišujú v niektorých funkciách.

Zaujímavosťou je tiež to, že GitLab je veľmi populárny. Využívajú ho známe spoločnosti, ako napríklad SpaceX, IBM či Alibaba Group.

Git je dôležitou súčasťou každého vývojárskeho tímu
Ovládanie systému Git ti otvára nové pracovné možnosti.

Využi Git aj ty

Používanie Git je rýchle a jednoduché. Množstvo výhod neprinesie len tebe, ale aj celému tvojmu tímu. Spoločná práca bude vďaka tomuto systému oveľa flexibilnejšia a produktívnejšia. Okrem toho znalosti Git ti môžu otvoriť nové možnosti. Prezri si voľné pracovné miesta, ktoré máme aktuálne k dispozícii a vyskúšaj si prácu ako Java programátor senior či junior.

Daj nám o sebe vedieť