Sobes.tech
Junior

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.