Git: Branch
Z MiS
(Rozdíly mezi verzemi)
m (Při vytvoření větve se do ní nepřesuneme. Při checkoutu se soubory změní. Doplněno zobrazení vizualizace návaznosti větví.) |
(Přidáno smazání již nepotřebné větve, přepracováno na použití rebase místo merge, příklady názvů větví, git checkout -b přidán.) |
||
Řádka 31: | Řádka 31: | ||
* Každý projekt na GitHubu má větev ''main''. V té by měl být nejaktuálnější použitélný kód. | * 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. | * 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 | ||
+ | * <code>pridani-menu-zakaznik</code>, <code>oprava_vypisu_do_logu</code> | ||
Řádka 43: | Řádka 49: | ||
== Vytvoření nové větve == | == Vytvoření nové větve == | ||
− | git branch '' | + | 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. | * 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 == | == Přepnutí do druhé větve == | ||
− | git checkout '' | + | 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. | * 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. | * Samozřejmě se kdykoli můžete stejným způsobem vrátit ke stávající větvi. | ||
Řádka 54: | Řádka 62: | ||
== Spojení dvou větví == | == Spojení dvou větví == | ||
+ | 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ž nechceme. | ||
+ | git rebase -i ''cilova_vetev'' | ||
+ | * Celou historii této větve tím shrneme do jednoho commitu (nebo několika commitů). | ||
+ | * Zároveň vyřešíme kolize mezi naší a cílovou větví ve všech souborech, kde nastaly. | ||
+ | |||
+ | git rebase --continue | ||
+ | * Dokončíme změny — větev se změnami nyní obsahuje všechen kód z této i cílové větve. | ||
+ | |||
* Přepněte se do cílové větve (obvykle ''main'') a napište | * Přepněte se do cílové větve (obvykle ''main'') a napište | ||
− | git merge '' | + | git merge ''cilova_vetev'' |
* Obsah druhé větve se připojí ke stávající větvi. | * Obsah druhé větve se připojí ke stávající větvi. | ||
+ | |||
+ | == 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'' | ||
Verze z 14. 12. 2020, 14:29
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í
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ž nechceme.
git rebase -i cilova_vetev
- Celou historii této větve tím shrneme do jednoho commitu (nebo několika commitů).
- Zároveň vyřešíme kolize mezi naší a cílovou větví ve všech souborech, kde nastaly.
git rebase --continue
- Dokončíme změny — větev se změnami nyní obsahuje všechen kód z této i cílové větve.
- Přepněte se do cílové větve (obvykle main) a napište
git merge cilova_vetev
- Obsah druhé větve se připojí ke stávající větvi.
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