Junior
Čo znamená vykonať rebase na hlavnú vetvu?
sobes.tech AI
Odpoveď od AI
Vykonanie git rebase main z aktuálnej vetvy znamená presun referenčného bodu vašej vetvy na posledný commit main.
Toto sa deje nasledovne:
- Git dočasne uloží commity vašej aktuálnej vetvy, ktoré vznikli po odbočení od
main. - Vaša aktuálna vetva sa resetuje do stavu vetvy
main. - Uložené commity sa postupne aplikujú na posledný commit
main.
Hlavné rozdiely od merge:
| Charakteristika | Rebase |
Merge |
|---|---|---|
| História | Lineárna, bez commitov zlúčenia | Nelineárna, s commitmi zlúčenia |
| Čistota histórie | Čistejšia, ľahšie na pochopenie | Môže byť ťažšia na pochopenie |
| Konflikty | Riešia sa pre každý commit zvlášť | Riešia sa raz pre všetky zmeny |
| Použitie | Preferované pre malé, osobné vetvy | Preferované pre integráciu verejných vetiev |
Príklad:
Počiatočná história:
A -- B -- C (main)
\
D -- E (feature)
Po git checkout feature a git rebase main:
A -- B -- C (main)
\
D' -- E' (feature)
Kde D' a E' sú commity D a E s novým rodičovským odkazom.
Možné problémy:
- Konflikty: Môžu nastať pri aplikácii každého commitu.
- Prepisovanie histórie:
rebasemení ID-čka commitov. Je to nebezpečné, ak vykonávaterebasena vetve, ktorá už bola publikovaná a na ktorej pracujú iní vývojári. V takom prípade môže byť potrebné použiť force push (git push --force), čo treba robiť opatrne.