Search
Git lze stáhnout z oficiální stránky git-scm.com a vybrat si příslušnou distribuci. Pro linuxové uživatele (Ubuntu a podobné distribuce) stačí git nainstalovat z příkazové řádky pomocí:
sudo apt update sudo apt install git
Každý poskytovatel GITích služeb umožňuje obousměrnou komunikaci se serverem z důvodu synchronizace změn. Existují dvě možnosti, kde první, méně používáná, je přes HTTP(s) protokol, která pokaždé vyžaduje zadání uživatelského jména a hesla. Druhá běžně používaná metoda je pomocí SSH klíče, která zajišťuje autentizaci se serverem bez zadání uživatelského jména a hesla. Následující příklad vytvoří dostatečně bezpečný SSH klíč pro komunikaci se serverem.
ssh-keygen -t rsa -b 4096 -C "username@fel.cvut.cz"
-t
-b
Jelikož autentizace pomocí SSH klíčů probíhá na obou stranách, výstupem jsou dva soubory. Prvním souborem je soukromý klíč id_rsa, který zůstává u uživatele na počítači a nikdy se nikam a nikomu nekopíruje. Jeho účelem je ověření totožnosti uživatele. Druhý soubor je id_rsa.pub, který je označován jako veřejný klíč a nahrává se na server, se kterým chceme komunikovat. Veřejný klíč slouží serveru k identifikaci konkrétního uživatel, který drží klíč soukromý. Dobrou praxí je, že každé zařízení má svůj vlastní soukromý klíč a který existuje vždy právě jeden. Soukromým klíčem se jednoznačně identifikujete u všech autorit, kterým jste dali veřejný klíč. Ty naopak je možné nahrát všude, kam chcete s daným zařízením přistupovat.
Abyste mohli repozitáře stahovat nebo i nahrávat, je třeba spárovat Vaše zařízení se serverem. To provedete tak, že se přihlásíte na stránku https://gitlab.fel.cvut.cz pomocí SSO. Ve Vašem profilu (vlevo nahoře) zvolte Preferences a následně nalevo nabídku SSH keys. Do pole Key zadejte obsah souboru id_rsa.pub a do Title zadejte název zařízení, abyste mohli identifikovat o jaký klíč se jedná. Dáte možnost si nastavit dobu expirace, která je v základu 1 rok. Osobně doporučujeme dobu expirace ponechat zadanou, neboť když daný klíč nepoužíváte nebo už neexistuje, tak zde poté není bezpečnostní hrozba, že by se privátní klíč mohl dál používat.
Klíč otevřete na svém počítači v libovolném textovém editoru (včetně řádkových cat, more nebo less) a zkopírujte obsah souboru na web do pole Key.
cat
more
less
Samotná práce s GITem není nic složitého než verzování vlastního kódu a případně synchronizace kódů mezi počítačem a serverem. Slovo “případně” tam je schválně, neboť samotný repozitář může být pouze na vlastním počítači a nemusí se nikam nahrávat na server. V případě nahrání repozitáře na server tak máte potom jistotu, že Vaše kódy budou zálohované. V případě smazání nebo poškození serveru nemusí být kódy ztraceny. Pokud máte totiž kompletní historii uloženou na vlastním počítači (do doby, kdy jste provedli poslední synchronizaci), je potom celkem jednoduché obnovit celý repozitář.
Další výhodou verzování kódu je možnost spolupráce více programátorů na jednom projektu. Zde už je potřeba ukládat kódy na server a mít alespoň jednoho správce, který bude rozhodovat jak bude výsledný kód vypadat. Jelikož dva programátoři mohou upravovat stejný kód s jiným výsledkem, zde je potom potřeba rozhodnout, který kód se použije a případně jak se upraví, aby projekt šel zkompilovat a fungoval jak má. Tomuto kroku se říká takz. merge, případně merge request pro platformu GitLAB nebo pull request u platformy GitHub.
pozn. Veškeré popisy se vztahují jak na Windows platformu, tak Linux. U Windows platformy existuje ještě grafická nadstavba, ale ta tu nebude popsána a na cvičeních nebude využívána.
V případě, že jste GIT nikdy nepoužil/a, je třeba nastavit globální nastavení v podobě jména a příjmení a emailu. To se provede následujícími příkazy:
git config --global user.name "Jmeno Prijmeni" git config --global user.email "username@fel.cvut.cz"
cd slozka_s_repozitarem git config user.name "Jmeno Prijmeni" git config user.email "username@fel.cvut.cz"
Na začátku máte dvě možné situace, které mohou nastat:
Když neexistuje repozitář, který chcete použít nebo začínáte nový projekt, je třeba repozitář vytvořit. To se provede v příkazové řádce následujícími příkazy:
cd slozka_kde_bude_repozitar git init
cd slozka_kde_je_repozitar git remote rename origin old-origin git remote add origin git@gitlab.fel.cvut.cz: ... git push -u origin --all git push -u origin --tags
Pokud je repozitář veřejný a je nabízen např. pomocí HTTP(S) protokolu (typicky projekty na github.com), je možné ho naklonovat následovně:
HTTP(S)
git clone https://www.github.com/...
V případě privátních repozitářů je obvyklým způsobem využití SSH, zpravidla tak, že se na server s repozitářem se nejprve uloží privátní klíč uživatele (viz. postup výše). Tento způsob budeme používat při práci s fakultním serverem gitlab.fel.cvut.cz.
SSH
git clone git@gitlab.fel.cvut.cz: ...
Pokud má být repozitář synchronizovaný se serverem, je třeba ještě říci kde se server nachází. Je třeba nastavit tzv. remote uživatele následujícím příkazem (adresa git@gitlab.fel.cvut.cz:B192_B2B99PPC/tutorials.git se může lišit):
git remote add origin git@gitlab.fel.cvut.cz:B192_B2B99PPC/tutorials.git
Existuje mnoho možností a nástrujů, jak vizualizovat strukturu repozitáře. V následující kapitole se budeme věnovat programu gitk, který je standardně součástí každé distribuce GITu. Jeho účelem je procházet jednotlivé změny, kdo, kdy je udělal a jaké soubory se změnily. Je dovoleno pracovat na stejném repozitáři ve více lidech, poté by zde bylo vidět i rozvětvení a sloučení (merge) v jednu větev.
Program gitk lze spustit bez parametrů nebo i s parametry. Pár základních je sepsáno níže:
gitk
gitk --all
gitk -t [tag]
gitk -b [branch]
Na následujícím obrázku znázorněno, jak vypadá příklad vizualizace tohoto repozitáře a jednotlivé části dialogu jsou popsány níže:
git checkout [ID]
Přes pravé tlačítko myši lze nastavovat vlastnosti bez použití příkazové řádky, jako je přiřazení tagu, porovnání dvou commitů apod.