Sobes.tech
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:

  1. Git dočasne uloží commity vašej aktuálnej vetvy, ktoré vznikli po odbočení od main.
  2. Vaša aktuálna vetva sa resetuje do stavu vetvy main.
  3. 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: rebase mení ID-čka commitov. Je to nebezpečné, ak vykonávate rebase na 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.