Setting up a repository

Setting up a repository

Tento kurz poskytuje přehled informací o tom, jak nastavit repozitář (repo) pod správou verzí Git. Budete provedeni procesem inicializace repozitáře Git pro nový nebo existující projekt. Níže jsou uvedeny příklady workflow místně vytvořených repozitářů i repozitářů klonovaných ze vzdálených repozitářů. V průvodci se předpokládá základní znalost rozhraní příkazového řádku.

Hlavní body, které se v tomto průvodci řeší:

  • Inicializace nového repozitáře Git
  • Klonování existujícího repozitáře Git
  • Provedení commitu upravené verze souboru do repozitáře
  • Konfigurace repozitáře Git pro vzdálenou spolupráci
  • Běžné příkazy řízení verzí Git

Až dokončíte tento modul, měli byste být schopni vytvořit repozitář Git, používat běžné příkazy Gitu, provést commit u upraveného souboru, zobrazit historii projektu a nakonfigurovat připojení k hostitelské službě Git (Bitbucket).

Co je repozitář Git?

Repozitář Git je virtuální úložiště pro váš projekt. Umožňuje vám ukládat verze kódu, ke kterým pak můžete v případě potřeby přistupovat. 

Inicializace nového repozitáře: git init

K vytvoření nového repozitáře použijte příkaz git init. Příkaz git init je jednorázový příkaz, který použijete během počátečního nastavení nového repozitáře. Když tento příkaz spustíte, vznikne nový podřazený adresář .git umístěný v aktuálním pracovním adresáři. Vytvoří se také nová větev master. 

Správa verzí existujícího projektu pomocí nového repozitáře Git

V tomto příkladu se předpokládá, že již existuje složka projektu, ve které chcete repozitář vytvořit. Nejdříve pomocí příkazu cd přejdete do kořenové složky projektu a poté spustíte příkaz git init.

cd /path/to/your/existing/code
git init

Když příkaz git init odkážete na složku existujícího projektu, provede se stejné inicializační nastavení jako výše, ale bude škálované do adresáře tohoto projektu.

git init <project directory>

Na stránce git init naleznete ohledně příkazu git init podrobnější zdroje.

Klonování existujícího repozitáře: git clone

Pokud již byl projekt nastaven v centrálním repozitáři, je příkaz clone nejběžnějším způsobem, jak mohou uživatelé získat místní vývojový klon. Stejně jako příkaz git init je i klonování obecně jednorázová operace. Jakmile vývojář získá pracovní kopii, budou se všechny operace správy verzí spravovat v jeho místním repozitáři.

git clone <repo url>

Příkaz git clone se používá k vytváření kopií nebo klonů vzdálených repozitářů. Příkazu git clone předáte adresu URL repozitáře. Git podporuje několik různých síťových protokolů a odpovídající formáty URL. V tomto příkladu použijeme protokol Git SSH. Adresy URL protokolu Git SSH mají následující schéma: git@HOSTNAME:USERNAME/REPONAME.git

Příklad adresy Git SSH URL: git@bitbucket.org:rhyolight/javascript-data-store.git, kde hodnoty šablony odpovídají:

  • HOSTNAME: bitbucket.org
  • USERNAME: rhyolight
  • REPONAME: javascript-data-store

Při spuštění se provede pull poslední verze souborů vzdáleného repozitáře z větve master a soubory se přidají do nové složky. Název nové složky bude odpovídat proměnné REPONAME, v tomto případě javascript-data-store. Složka bude obsahovat kompletní historii vzdáleného repozitáře a nově vytvořené větve master.

Další dokumentaci k použití příkazu git clone a podporovaným formátům Git URL naleznete na stránce git clone.

Uložení změn do repozitáře: příkazy git add a git commit

Nyní, když už máte naklonovaný nebo inicializovaný repozitář, v něm můžete provést commit změn verze souboru. V následujícím příkladu se předpokládá, že jste projekt založili ve složce /path/to/project. V příkladu se provedou následující kroky:

  • Změňte adresáře na cestu /path/to/project
  • Vytvořte nový soubor CommitTest.txt obsahující text ~"test content for git tutorial"~
  • Pomocí příkazu git add přidejte soubor CommitTest.txt do oblasti pro staging repozitáře
  • Vytvořte nový commit se zprávou, která popisuje, jakou práci jste v commitu udělali
cd /path/to/project
echo "test content for git tutorial" >> CommitTest.txt
git add CommitTest.txt
git commit -m "added CommitTest.txt to the repo"

Po provedení tohoto příkladu bude do historie vašeho repozitáře přidán soubor CommitTest.txt a začnou se sledovat jeho budoucí aktualizace.

V tomto příkladu jsme představili dva další příkazy git: add a commit. Jednalo se jen o jednoduchý příklad, oba příkazy jsou popsány do hloubky na stránkách git add a git commit. Dalším běžným případem užití příkazu git add je možnost s příznakem --all. Když spustíte příkaz git add --all, přidají se do repozitáře všechny změněné a nesledované soubory a aktualizuje se pracovní strom repozitáře.

Spolupráce z repozitáře do repozitáře: git push

Je důležité pochopit, že idea „pracovní kopie“ v systému Git se značně liší od pracovní kopie, kterou získáte provedením checkoutu zdrojového kódu z repozitáře SVN. Git na rozdíl od SVN nerozlišuje mezi pracovními kopiemi a centrálním repozitářem – obojí se považuje za plnohodnotné repozitáře Git.

Kvůli tomu je spolupráce v systému Git úplně jiná než v systému SVN. Zatímco SVN závisí na vztahu mezi centrálním repozitářem a pracovní kopií, model spolupráce Gitu je založen na interakci repozitáře s repozitářem. Místo checkinu pracovní kopie do centrálního repozitáře SVN přesunujete commity z jednoho repozitáře do druhého pomocí akcí push a pull.

Samozřejmě vám nic nebrání v tom, abyste dali určitým repozitářům Git zvláštní význam. Když například jednoduše navrhnete jeden repozitář Git jako „centrální“, bude možné pomocí Gitu replikovat centralizovaný workflow. Toho dosáhnete spíše pomocí koncencí než pomocí pevného připojení k samotným VCS.

Holé vs. klonované repozitáře

Pokud jste v předchozí části o inicializaci nového repozitáře použili k nastavení místního repozitáře příkaz git clone, je už váš repozitář pro vzdálenou spolupráci nakonfigurován. Příkaz git clone repozitář automaticky nakonfiguruje se vzdáleným ukazatelem na Git URL, ze které jste klonovali. To znamená, že když změníte soubor a provedete commit, můžete tyto změny posunout příkazem git push do vzdáleného repozitáře.

Pokud jste vytvořili nový repozitář pomocí příkazu git init, nemáte žádný vzdálený repozitář, do kterého byste mohli předat změny pomocí push. Běžným postupem při inicializaci nového repozitáře je přejít na hostovanou službu Git (například Bitbucket) a vytvořit repozitář zde. Služba vám poskytne adresu URL Git, kterou pak můžete přidat do svého místního repozitáře Git a předat pomocí příkazu git push do hostovaného repozitáře. Jakmile vytvoříte vzdálený repozitář ve zvolené službě, bude třeba aktualizovat místní repozitář pomocí mapování. Tento proces probereme v příručce Konfigurace a nastavení níže.

Pokud chcete hostovat vlastní vzdálený repozitář, budete muset nastavit „holý“ (bare) repozitář. Argument --bare přijímají příkazy git clone i git init. Nejběžnějším případem užití holého repozitáře je vytvoření vzdáleného centrálního repozitáře Git

Konfigurace a nastavení: git config

Jakmile budete mít nastavený vzdálený repozitář, budete muset přidat do místního souboru git config url adresu vzdáleného repozitáře a nastavit předcházející větev pro místní větve. Tuto možnost poskytuje příkaz git remote.

git remote add <remote_name> <remote_repo_url>

Tento příkaz namapuje vzdálený repozitář na adrese <remote_repo_url> na odkaz v místním repozitáři pod názvem <remote_name>. Jakmile vzdálený adresář namapujete, můžete do něj předávat místní větve pomocí push.

git push -u <remote_name> <local_branch_name>

Tento příkaz provede push větve místního repozitáře pod názvem <local_branc_name> do vzdáleného repozitáře pod názvem <remote_name>.

Podrobnější pohled na příkaz git remote naleznete nastránce git remote.

Kromě konfigurace URL vzdáleného repozitáře může být také nutné nastavit globální možnosti konfigurace Git, jako je uživatelské jméno nebo e-mail. Příkaz git config vám umožňuje nakonfigurovat instalaci Gitu (nebo individuální repozitář) pomocí příkazového řádku. Tento příkaz může definovat cokoli – od uživatelských informací přes preference až po chování repozitáře. Níže uvádíme několik nejběžnějších možností konfigurace.

Git ukládá možnosti konfigurace ve třech oddělených souborech, které vám umožňují nastavit rozsah možností na individuální repozitáře (místní), uživatele (globální) nebo celý systém (systém):

  • Místní: <repo>/.git/config – nastavení specifická pro repozitář.
  • Globální: /.gitconfig – nastavení specifická pro uživatele. Zde se ukládají možnosti nastavené s příznakem --global.
  • Systém: $(prefix)/etc/gitconfig – systémová nastavení.

Define the author name to be used for all commits in the current repository. Typically, you’ll want to use the --global flag to set configuration options for the current user.

git config --global user.name <name>

Define the author name to be used for all commits by the current user.

Když přidáte příznak --local nebo informaci ohledně úrovně konfigurace vůbec nepředáte, nastaví se hodnota user.name na aktuální místní repozitář.

git config --local user.email <email>

Define the author email to be used for all commits by the current user.

git config --global alias.<alias-name> <git-command>

Vytvořte zástupce příkazu Git. Jedná se o mocný nástroj, který umožňuje vytvářet vlastní zástupce pro běžně používané příkazy git. Jednoduchý příklad je třeba toto:

git config --global alias.ci commit

Tímto se vytvoří příkaz ci, který můžete spustit jako zástupce příkazu git commit. Více informací o aliasech gitu naleznete na stránce git config.

git config --system core.editor <editor>

Definujte pro všechny uživatele aktuálního počítače, který textový editor budou používat příkazy jako git commit. Jako argument <editor> zadejte příkaz, který spustí požadovaný editor (například vi). V tomto příkladu představujeme možnost --system. Možnost --system nastaví konfiguraci pro celý systém, tzn. pro všechny uživatele a repozitáře v počítači. Podrobnější informace o úrovních konfigurace najdete na stránce git config.

git config --global --edit

Chcete-li globální konfigurační soubor ručně upravit, otevřete jej v textovém editoru. Podrobný průvodce konfigurace textového editoru pro Git se nachází na stránce Git config.

Discussion

Všechny možnosti konfigurace se ukládají v prostých textových souborech, příkaz git config je tedy vlastně jen pohodlným rozhraním příkazového řádku. Obvykle je třeba konfigurovat instalaci Gitu, pouze když začínáte pracovat na novém počítači. Prakticky ve všech případech bude vhodné použít příznak --global. Důležitou výjimkou je přepsání e-mailové adresy autora. Možná budete chtít nastavit osobní e-mailovou adresu pro osobní a open source repozitáře a pracovní e-mailovou adresu pro pracovní repozitáře.

Git stores configuration options in three separate files, which lets you scope options to individual repositories, users, or the entire system:

  • <repo>/.git/config – Repository-specific settings.
  • ~/.gitconfig – nastavení specifická pro uživatele. Zde se ukládají možnosti nastavené s příznakem --global.
  • $(prefix)/etc/gitconfig – System-wide settings.

When options in these files conflict, local settings override user settings, which override system-wide. If you open any of these files, you’ll see something like the following:

[user] name = John Smith email = john@example.com [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim

You can manually edit these values to the exact same effect as git config.

Example

The first thing you’ll want to do after installing Git is tell it your name/email and customize some of the default settings. A typical initial configuration might look something like the following:

Povězte Gitu, kdo jste pomocí příkazu git config

git --global user.name "John Smith" git config --global user.email john@example.com

Vyberte svůj oblíbený textový editor

git config --global core.editor vim

Přidejte aliasy jako u SVN

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit

Pomocí tohoto postupu vytvoříte soubor ~ /.gitconfig z předchozí části. Podrobnější pohled na příkaz git config naleznete na stránce Git config.

Souhrn

Ukázali jsme zde, jak vytvořit repozitář Git pomocí dvou metod: git init a git clone. Tohoto průvodce využijete, pokud chcete spravovat zdrojový kód softwaru nebo jakýkoli jiný obsah, kde je třeba spravovat verze. Také jsme představili příkazy git add, git commit, git push a git remote a použili je na vyšší úrovni. 

Přečtěte si našeho průvodce, který vám pomůže vybrat správný systém repozitáře kódu pro váš tým

Ready to learn Git?

Try this interactive tutorial.

Začít