Sobes.tech
Junior

Jaký je rozdíl mezi příkazy git rebase a git merge?

sobes.tech AI

Odpověď od AI

Rozdíl mezi git rebase a git merge spočívá v tom, jakým způsobem jsou změny z jedné větve integrovány do druhé.

git merge sloučí změny vytvořením nového commitů sloučení. Historie commitů zůstává lineární pouze v rámci každé větve, ale bod sloučení vytváří "odbočku".

// Příklad použití:
git checkout main
git merge feature/nova-funkce

git rebase přesune commity cílové větve na vrchol commitů základní větve. To vytváří lineární historii commitů, jako by práce byla provedena přímo v základní větvi. Původní commity větve, na které se rebase provádí, jsou přepsány novými rodičovskými commity.

// Příklad použití:
git checkout feature/nova-funkce
git rebase main

Porovnání:

Vlastnost git merge git rebase
Typ historie Nelineární (s commity sloučení) Lineární (přepisuje commity)
Historie commitů Je plně zachována Je měněna (commity jsou přepisovány)
Commit sloučení Je vytvořen Není vytvářen
Přehlednost historie Může být složitější sledovat při častých sloučeních Čistší a lineárnější, ale ztrácí se kontext původních sloučení
Použití Doporučeno pro veřejné větve Preferováno pro lokální, dosud nezveřejněné větve

Volba mezi nimi závisí na úkolu a preferencích týmu. Pro veřejné větve se obvykle doporučuje git merge pro zachování historie. U lokálních větví, které ještě nebyly zveřejněny, pomáhá git rebase udržovat čistou, lineární historii.