Git
Chapters ▾ 2nd Edition

2.1 Základy práce se systémem Git - Získání repozitáře Git

Pokud byste si o Gitu měli přečíst jen jednu kapitolu, měla by to být právě tahle. Tato kapitola popisuje všechny základní příkazy, které potřebujete pro drtivou většinu věcí, jejichž prováděním budete v Gitu trávit svůj čas. Po přečtení kapitoly byste měli být schopni nakonfigurovat a inicializovat repozitář, zahájit a ukončit sledování souborů, připravovat soubory k zápisu (stage) a zapisovat revize (commit). Ukážeme si také, jak nastavit Git, aby ignoroval určité soubory a masky souborů, jak rychle a jednoduše vrátit nežádoucí změny, jak procházet historii projektu a zobrazit změny mezi jednotlivými revizemi a jak posílat soubory do vzdálených repozitářů (push) a naopak z nich soubory zase stahovat (pull).

Získání repozitáře Git

Projekt lze v Gitu získat dvěma základními způsoby. První způsob spočívá v tom, že vezmeme existující projekt nebo adresář a importujeme ho do Gitu. Druhý způsob spočívá v naklonování již existujícího gitového repozitáře z jiného serveru.

Inicializace repozitáře v existujícím adresáři

Chcete-li v Gitu zahájit sledování existujícího projektu, přejděte do adresáře projektu a napište:

$ git init

Příkaz vytvoří nový podadresář s názvem .git, který bude obsahovat všechny soubory nezbytné pro repozitář, tzv. kostru repozitáře Git. V tomto okamžiku se z vašeho projektu ještě nic nesleduje. (Více informací o tom, jaké soubory obsahuje právě vytvořený adresář .git, naleznete v kapitole Git Internals.)

Chcete-li zahájit správu verzí existujících souborů (a ne jen prázdného adresáře), měli byste pravděpodobně zahájit sledování (tracking) těchto souborů a zapsat první revizi (provést počáteční commit). Můžete tak učinit pomocí několika příkazů git add, jimiž určíte soubory, které chcete sledovat, a poté provedete příkaz provedete git commit:

$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'

K tomu, co přesně tyto příkazy provedou, se dostaneme za okamžik. V této chvíli máte vytvořen gitový repozitář se sledovanými soubory a úvodní revizí.

Klonování existujícího repozitáře

Chcete-li vytvořit kopii existujícího gitového repozitáře (například u projektu, do nějž chcete začít přispívat), pak příkazem, který hledáte, je git clone. Pokud jste zvyklí pracovat s jinými systémy pro správu verzí, jako je například Subversion, jistě jste si všimli, že příkaz zní clone, a nikoli checkout. Tento rozdíl je podstatný. Místo pouhého získání pracovní kopie souborů projektu, získá Git plnou kopii téměř všech dat na serveru. Po provedení příkazu git clone budou k historii projektu staženy všechny verze všech souborů. Pokud by někdy poté došlo k poruše disku serveru, lze použít libovolný z těchto klonů na kterémkoli klientovi a obnovit pomocí něj server zpět do stavu, v němž byl v okamžiku klonování (může dojít ke ztrátě některých zásuvných modulů na straně serveru a podobných věcí, ale všechna verzovaná data budou obnovena. Další podrobnosti naleznete v kapitole Zprovoznění Gitu na serveru).

Repozitář naklonujete příkazem git clone [url]. Pokud například chcete naklonovat gitovou knihovnu zvanou libgit2, můžete to provést následovně:

$ git clone https://github.com/libgit2/libgit2

Tímto příkazem se vytvoří adresář s názvem libgit2, inicializuje se v něm podadresář .git, stáhnou se všechna data pro tento repozitář a vytvoří se pracovní kopie nejnovější verze. Přejdete-li do nového adresáře libgit2, uvidíte v něm soubory projektu připravené ke zpracování nebo jinému použití. Pokud chcete naklonovat repozitář do adresáře pojmenovaného jinak než libgit2, můžete název zadat jako další parametr na příkazovém řádku:

$ git clone https://github.com/libgit2/libgit2 mylibgit

Tento příkaz učiní totéž co příkaz předchozí, ale cílový adresář se bude jmenovat mylibgit.

Git nabízí celou řadu různých přenosových protokolů. Předchozí příklad využívá protokol https://, můžete se ale setkat také s protokolem git:// nebo user@server:/path/to/repo.git, který používá přenosový protokol SSH. V kapitole Zprovoznění Gitu na serveru budou uvedeny všechny dostupné možnosti, které mohou být na serveru pro přístup do gitového repozitáře nastaveny, včetně jejich předností a nevýhod.