Verzovací nástroj Git
- Git je nástroj pro správu verzí, který se používá pro vývoj softwaru
- Správa verzí je systém, který zaznamenává verze projektu v průběhu času a umožňuje se k daným verzím později vrátit
- Git je distribuovaný verzovací systém, oproti například SVN, který je centralizovaný verzovací systém
- Další verzovací systém, s kterým se lze setkat, je kromě zmíněného SVN (Subversion) například Mercurial SCM
- Elektronická verze knihy Pro Git - velmi doporučuji si přečíst první tři kapitoly
Vytvoření a inicializace projektu
- Registrace na GitLabu, pokud ještě nejste registrovaní
- Vytvoření nového projektu:
- Název by měl být stejný jak na školním GitLabu
- Visibility level: Private
- Create project
- Nastavení práv pro cvičícího:
- Settings -> Members
- Vyhledat cvičícího - Karel Vaculík
- Nastavit Project Access na Developer
- Add users to project
- Nastavení globálních proměnných Gitu:
- Nastavuje se jen jednou na daném počítači
- Při vytváření dalšího projektu už není potřeba
- Inicializace lokálního repozitáře:
- V adresáři, kde chcete vytvořit složku z projektem, zadat git clone a https adresu vašeho projektu
- Vytvořit remote odkaz na školní GitLab
- U domácích úloh bude v příkazu git remote uvedena adresa na příslušnou úlohu
- Stáhnout nultou iteraci a pushnout vše na svůj GitLab
- V případě domácí úlohy stahujeme místo větve iteration-00 větev master
- Povolení zápisu do větve master:
- Settings -> Protected Branches
- U větve master kliknout na Unprotect
- Vytvořit develop větev:
git config --global user.name "Karel Vaculík"
git config --global user.email "vacullik@gmail.com"
git clone https://gitlab.com/vacullik/pb162-seminar-project.git
git remote add munijava https://gitlab.fi.muni.cz/pb162/pb162-seminar-project.git
git pull munijava iteration-00
git push origin master
git checkout -b develop
Git Workflow
- Stáhnutí projektu nebo iterace z munijava
- Pokud git vrátí chybu fatal: refusing to merge unrelated histories, je potřeba přidat ještě parametr --allow-unrelated-histories
- Často při stahování nového zadání vznikají merge konflikty
- Pro vyhnutí se konfliktům lze k pull přidat následující parametry:
git pull munijava iteration-01
git pull munijava iteration-01 --allow-unrelated-histories
git pull -X theirs munijava iteration-01

- Provedení nějaké práce na projektu
- Lokální uložení (commit) změn:
- Pro výpis všech změněných souborů lze použít příkaz status
- Commit změněných souborů, nejprve je potřeba vybrat, které soubory se přidají do commitu
- Pěkný článek o tom, jak psát commit messages
- Uložení změn na GitLab server
- Pokud přidáme ještě parametr --set-upstream, uloží se k dané větvi uvedená remote větev
- Potom pro vykonání stejného příkazu stačí zadat pouze
- Po dokončení iterace nebo domácí úlohy a uložení na GitLab server zbývá vytvořit merge request:
- V GitLabu zvolit odpovídající projekt
- Merge Requests -> New Merge Request
- Source branch zvolit develop a Target branch zvolit master
- Potvrdit tlačítkem Compare branches and continue
- Zde si můžete prohlédnout seznam commitů a provedené změny
- Potvrdit Submit merge request
- Toď vše, dále už nic dalšího nepotvrzujte
- Merge request by měl nyní být viděn v seznamu requestů
- Prosím pozor ať neakceptujete merge request tlačítkem Accept Merge Request
- Stáhnout rozpracovanou verzi z GitLabu na jiném počítači lze pak příkazem:
- Pokud nebyl projekt na daném počítači ještě inicializován, je potřeba ho inicializovat pomocí git clone
- A přepnout se na větev develop
- Kompletní podrobný návod inicializace a workflow
git status
git add .
git commit -m "Implementace prvni iterace"
git push origin develop
git push origin develop --set-upstream
git push
git pull origin develop
git clone https://gitlab.com/vacullik/pb162-seminar-project.git
cd pb162-seminar-project
git checkout develop