Middle
Aký je rozdiel medzi príkazmi merge a rebase v systéme správy verzií Git?
sobes.tech AI
Odpoveď od AI
merge spája vetvy vytvorením nového commit-u s dvoma rodičmi, zachovávajúc históriu zmien. rebase presúva commit-y jednej vetvy na inú, lineárne usporadúva históriu, ale mení hash-y commit-ov.
-
Pri
merge:- Vytvorí sa nový commit zlúčenia.
- História vetiev zostáva jasná.
- Môžu nastať konflikty, ktoré sa riešia v novom commite.
# Príklad použitia merge git checkout feature-branch git merge main # Riešenie konfliktov, ak sú git commit -m "Zlúčiť main do feature-branch" -
Pri
rebase:- Commit-y "sa presúvajú" a aplikujú sa na cieľovú vetvu.
- História sa stáva lineárnou, môže vyzerať "čistejšie".
- Hash-y presunutých commit-ov sa menia.
- Môže nastať konflikt pre každý presúvaný commit.
- Neodporúča sa pre vetvy, ktoré už boli publikované a používajú ich iní vývojári, pretože to mení históriu.
# Príklad použitia rebase git checkout feature-branch git rebase main # Riešenie konfliktov, ak sú (opakovať pre každý konflikt) git add . git rebase --continue # alebo git rebase --skip na preskočenie commitu # alebo git rebase --abort na zrušenie
| Vlastnosť | merge | rebase |
|---|---|---|
| Zmena histórie | Zachováva históriu | Mení históriu (prepíše) |
| Commit-y | Vytvára merge commit | Presúva existujúce commit-y |
| Lineárnosť histórie | Nie (vetvy sa rozchádzajú) | Áno (zjednodušuje históriu) |
| Prístup | Není destruktívny | Potenciálne destruktívny |
| Použiteľnosť | Verejné, spoločné vetvy | Lokálne, osobné vetvy |