Git: Branch
Z MiS
Obsah |
Git
- Git je jedním z nejoblíbenějších verzovacích systémů současnosti.
- Více o Gitu se dozvíte na stránce Git.
- Zde se budeme zabývat vytvářením větví a konkrétně postupem na serveru GitHub.com.
K čemu větve jsou
- Větve (branch) používejte pro dílčí úpravy, kdy musíte dočasně způsobit to, že kód nejde přeložit a spustit.
Příklad:
- Při přidání nového okna v aplikaci musím do jiných oken přidat odkazy na nové okno.
- To ale způsobí, že kód ostatních oken nepůjde přeložit, dokud nedokončím přidání nového okna.
- Proto nejprve vytvořím branch, v té provedu všechny související úpravy, a jakmile jde opět kód přeložit, nahraji ho (MERGE) zpět do větve main.
Mělo by vždy platit:
- 1 změna = 1 větev.
- Větev by měla existovat právě tak dlouho, jak dlouho provádím změnu. Po dokončení změny nahraji kód do větve main.
- Větev by měla být samostatná co nejkratší dobu. Po tuto dobu nemají ostatní členové týmu k dispozici kód větve a nemohou tedy reagovat na vytvářené změny.
Pojmenování větví
- Každý projekt na GitHubu má větev main. V té by měl být nejaktuálnější použitélný kód.
- Další větve by měly být pojmenovány tak, aby bylo jasné, jakou úpravu v rámci této větve provádíte.
- Místo mezer v názvu se obvykle používají podtržítka.
- Větve se obvykle pojmenovávají malými písmeny.
- Dejte si pozor na české znaky. Git bude používat kódování UTF-8, což může zlobit při zobrazování na Windows. Lze pojmenovávat bez diakritiky, nebo anglicky.
- Příklady
-
pridani-menu-zakaznik
,oprava_vypisu_do_logu
Zobrazení všech aktuálních větví
- Zobrazení názvů větví
git branch
- Zobrazení včetně vizualizace návazností
git log --oneline --decorate --graph --all
Vytvoření nové větve
git checkout -b nazev_nove_vetve
- Tento příkaz nás rovnou přepne do nové větve a můžeme pokračovat v práci v ní.
git branch nazev_nove_vetve
- Nová větev se vytvoří, ale zatím se do ní nepřesuneme. Zůstáváme stále ve stávající větvi.
Přepnutí do druhé větve
git checkout nazev_druhe_vetve
- Pozor! Soubory ve vašem lokálním repozitáři se upraví tak, aby jejich obsah odpovídal stavu druhé větve.
- Samozřejmě se kdykoli můžete stejným způsobem vrátit ke stávající větvi.
Spojení dvou větví
- Přepni do větve se změnami
git checkout vetev_se_zmenami
- Nejprve spojte snímky ve větvi se změnami do jednoho snímku
- Tento krok můžete sice vynechat, ale všechny dílčí commity bychom tím přenesli do hlavní větve, což by způsobilo nepřehlednost hlavní větve.
- Proto provedeme:
git rebase -i cilova_vetev
- Celou historii této větve tím shrneme do jednoho commitu (nebo několika málo commitů).
- Nyní musíme vyřešit kolize mezi naší a cílovou větví ve všech souborech, kde nastaly.
- Otevřete tyto soubory v editoru a vyberte správnou variantu textu.
- Dokončíme změny — větev se změnami nyní obsahuje všechen kód z této i cílové větve:
git rebase --continue
- Upravenou historii naší větve nahrajeme do repozitáře
git push --force
git push --force
nikdy neprovádějte ve větvi main. Historii větve main byste neměli měnit!
- Přepněte se do cílové větve (obvykle main) a připojte k ní obsah větve se změnami
git checkout cilova_vetev git merge vetev_se_zmenami
Smazání již nepotřebné větve
- Po sloučení změn do cílové větve již můžeme stávající větev smazat:
git branch -d vetev_se_zmenami
- Pokud bychom některé změny neměli sloučené, Git by nás upozornil a větev by nesmazal.
- Poté můžeme smazat větev i ve vzdáleném repozitáři:
git push origin --delete vetev_se_zmenami
Související stránky