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.