Aký je rozdiel medzi príkazmi git rebase a git merge?
sobes.tech AI
Odpoveď od AI
Rozdiel medzi git rebase a git merge spočíva v spôsobe, akým sa integrujú zmeny z jednej vetvy do druhej.
git merge spája zmeny vytvorením nového commit-u zlúčenia. História commitov zostáva lineárna iba v rámci každej vetvy, ale bod zlúčenia vytvára "vetvu".
// Príklad použitia:
git checkout main
git merge feature/nova-funkcia
git rebase presunie commity cieľovej vetvy na vrchol commitov základnej vetvy. To vytvára lineárnu históriu commitov, akoby práca bola vykonaná priamo v základnej vetve. Pôvodné commity vetvy, na ktorú sa vykonáva rebase, sú prepísané novými rodičovskými commitmi.
// Príklad použitia:
git checkout feature/nova-funkcia
git rebase main
Porovnanie:
| Vlastnosť | git merge | git rebase |
|---|---|---|
| Typ histórie | Nelineárna (s commitmi zlúčenia) | Lineárna (prepísanie commitov) |
| História commitov | Je úplne zachovaná | Je menená (commity sú prepísané) |
| Commit zlúčenia | Je vytvorený | Nie je vytvorený |
| Prehľadnosť histórie | Môže byť ťažšie sledovať pri častých zlúčeniach | Čistejšia a lineárna, ale stráca sa kontext pôvodných zlúčení |
| Použitie | Odporúča sa pre verejné vetvy | Preferuje sa pre lokálne, ešte nezverejnené vetvy |
Voľba medzi nimi závisí od úlohy a preferencií tímu. Pre verejné vetvy sa zvyčajne odporúča git merge na zachovanie histórie. V lokálnych vetvách, ktoré ešte neboli zverejnené, git rebase pomáha udržať čistú, lineárnu históriu.