Git: Branch

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(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.)
(Přidáno git push --force)
 
Řádka 62: Řádka 62:
  
 
== Spojení dvou větví ==
 
== Spojení dvou větví ==
 +
; Přepni do větve se změnami
 
  git checkout ''vetev_se_zmenami''
 
  git checkout ''vetev_se_zmenami''
 +
 
; Nejprve spojte snímky ve větvi se změnami do jednoho snímku
 
; 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.
+
* 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''
 
  git rebase -i ''cilova_vetev''
* Celou historii této větve tím shrneme do jednoho commitu (nebo několika commitů).
+
* Celou historii této větve tím shrneme do jednoho commitu (nebo několika málo commitů).
* Zároveň vyřešíme kolize mezi naší a cílovou větví ve všech souborech, kde nastaly.
+
  
 +
* 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
 
  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.
+
 
 +
; Upravenou historii naší větve nahrajeme do repozitáře:
 +
git push --force
 +
<div class="Varovani">
 +
<code>git push --force</code> nikdy neprovádějte ve větvi ''main''. Historii větve ''main'' byste neměli měnit!
 +
</div>
 
   
 
   
* Přepněte se do cílové větve (obvykle ''main'') a&nbsp;napište
+
; Přepněte se do cílové větve (obvykle ''main'') a&nbsp;připojte k&nbsp;ní obsah větve se změnami:
  git merge ''cilova_vetev''
+
  git checkout ''cilova_vetev''
* Obsah druhé větve se připojí ke stávající větvi.
+
git merge ''vetev_se_zmenami''
  
  
Řádka 88: Řádka 99:
 
== Související stránky ==
 
== Související stránky ==
 
* [[Git]], [[Git: Versioning]], [[Git: Repository]]
 
* [[Git]], [[Git: Versioning]], [[Git: Repository]]
 
  
  
 
== Zdroje ==
 
== Zdroje ==
 
* [https://git-scm.com/book/cs/v2/V%C4%9Btve-v-syst%C3%A9mu-Git-V%C4%9Btve-v-kostce Git-Scm.com &rarr; Větve v&nbsp;kostce]
 
* [https://git-scm.com/book/cs/v2/V%C4%9Btve-v-syst%C3%A9mu-Git-V%C4%9Btve-v-kostce Git-Scm.com &rarr; Větve v&nbsp;kostce]

Aktuální verze z 14. 12. 2020, 14:41


Obsah

Git


K čemu větve jsou

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í

Příklady


Zobrazení všech aktuálních větví

git branch
git log --oneline --decorate --graph --all


Vytvoření nové větve

git checkout -b nazev_nove_vetve
git branch nazev_nove_vetve


Přepnutí do druhé větve

git checkout nazev_druhe_vetve


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
git rebase -i cilova_vetev
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

git branch -d vetev_se_zmenami
git push origin --delete vetev_se_zmenami


Související stránky


Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje