Základy práce s GITem
Workshop na téma GIT pro začátečníky i pokročilé, který jsme pořádali dne 26. 2. 2020, měl, podobně jako naše předchozí workshopy, velký úspěch. Tento verzovací nástroj byl probrán od základů. Ti, kteří nebyli přítomni, nyní dostávají druhou šanci, a to díky dalšímu příspěvku na našem odborném blogu.
Základní charakteristika Gitu
Git je distribuovaný verzovací systém. Stejně jako ostatní verzovací systémy (např. CVS, SVN) slouží pro evidenci historie změn a umožňuje spolupráci více členů týmu na jednom projektu.
Hlavní částí je tzv. repository, které obsahuje uložené soubory. Dále obsahuje potřebná dodatečná data umožňující evidovat a procházet změny souborů v průběhu času v různých fázích vývoje projektu.
Na rozdíl od jiných systémů (např. výše zmiňované SVN) umožňuje i práci bez trvalého připojení k centrálnímu serveru. Každý uživatel má svoji lokální kopii repository s kompletní historií.
Stejně jako jiné verzovací systémy je i Git používán typicky pro uložení zdrojových kódů napsaných v některém z programovacích jazyků. Důležitou funkcí každého verzovacího systému je vytváření a udržování paralelních větví a jejich opětovné slučování. Tyto operace lze rozumně provádět pouze s textovými soubory. V tomto případě jde o výše zmíněné zdrojové kódy.
Typy použití systému Git
Pokud plánuji používat Git na projektu sám a pouze na jednom stroji, je možné vytvořit si pouze lokální repository. V tu chvíli stačí Git zprovoznit pouze na daném stroji a vše potřebné je připraveno.
Bude-li na projektu pracovat více lidí nebo jej chci mít dostupný na více strojích, je nutné vytvořit vzdálené repository. Na výběr jsou dvě možnosti:
- vlastní server, na kterém si zprovozníme repository
- služba nabízející hostování repository
Úvodní vytvoření repository
Vytvoření lokálního repository provedeme příkazem:
git init
Tímto příkazem se vytvoří složka .git, ve které se bude uchovávat vše potřebné pro repository. Současně nám tento příkaz vytvoří novou větev s názvem master.
Chceme-li vytvořit repository v již existujícím projektu, použijeme příkaz:
git init <adresar>
Vlastní server
Na serveru si zprovozníme Git a založíme repository úplně stejným způsobem, jako bychom to udělali na lokálním stroji. Přidáme pouze příznak --bare
.
git init --bare
Příznak --bare
zajistí to, že není možné přímo editovat soubory v tomto úložišti a změny následně nahrát do repository.
Na lokálním stroji si pak toto repository zkopírujeme, tzv. naklonujeme.
git clone <adresa_vzdaleneho_repository>
Tím se nám vytvoří v aktuální složce kopie vzdáleného repository.
Služba
Další možností, jak si zajistit vzdálené repository, je využít existujících služeb, např. github.com nebo gitlab.com. Výhodou těchto služeb je, že je možné je za určitých podmínek využívat zdarma. Tyto služby navíc poskytují, kromě přívětivého uživatelského rozhraní, další užitečné nástroje, jako je např. nastavení přístupových práv.
Lokální repository ze služby se vytvoří stejně jako z vlastního serveru:
git clone <adresa_vzdaleneho_repository>
Základní operace s lokálním repository
Máme-li zprovozněné lokální repository, můžeme s ním začít pracovat. Pro začátek k tomu budeme využívat následující sadu příkazů:
- git status
- git add
- git commit
- git reset
- git diff
První příkaz, který budeme využívat téměř neustále, je:
git status
Status nám vypíše základní informace o našem repository:
- na jaké větvi se nacházíme a jaký je jeho stav vůči vzdálené větvi
- soubory se změnami ve working directory, které můžeme přidat do stage area
- soubory ve stage area připravené pro commit
Status vypisuje změny vždy vůči aktuálnímu adresáři. Pokud jsme v kořenovém adresáři, vidíme informace všechny. Pokud se ale přepneme do nějakého podadresáře, informace, které se vypíší, jsou platné pouze pro tento podadresář.
Náš lokální Git se skládá ze 3 základních částí:
- working directory
- staging area
- repository
Všechny změny, které v projektu tvoříme, se dějí ve working directory. Předtím, než je můžeme uložit do repository, musejí se přidat do staging area. To je v podstatě výběr změn, které chceme nahrát.
Pro přidání změn do staging area slouží příkaz:
git add <co>
Soubory nebo složky můžeme přidávat buď postupně:
git add <nazev_souboru_s_cestou>
git add index.php
git add <nazev_slozky_s_cestou>
git add app/router
Nebo přidat všechny změny z aktuálního adresáře najednou:
git add .
Jakmile jsou přidány všechny změny ve staging area, můžeme je nahrát do repository. K tomu použijeme příkaz:
git commit -m “popis commitu”
Po commitnutí změn se nám vytvoří první commit. Commity jsou základní jednotkou, která nám verzuje náš projekt. Mezi commity se můžeme přepínat, čímž se můžeme vracet do starších verzí našeho projektu.
Přidáme-li do staging area soubor, který ale ještě nechceme commitnout, použijeme pro jeho odstranění příkaz:
git reset <soubor>
Pro odstranění všech změn v daném adresáři slouží příkaz:
git reset .
Soubory se tímto vyjmou ze staging area. Změny v nich ale stále zůstanou.
Pro zobrazení všech změn v souborech, které jsou ve working directory, použijeme příkaz:
git diff
Pokud nás zajímá pouze konkrétní soubor, pak použijeme příkaz ve tvaru:
git diff <soubor>
Pokud nás zajímají změny v souborech, které již jsou ve staging area, přidáme příznak --cached
:
git diff --cached
Novější verze mají alias --staged
:
git diff --staged
Tímto jsme si osvojili základní příkazy, které potřebujeme pro snadné používání Gitu na lokálním stroji. V dalším článku si pak ukážeme pokročilejší věci, abychom mohli pracovat v týmu.