11.2 Konflikty pri Interaktívnom Rebase

Keďže interaktívny rebase v skutočnosti odoberie tvoje commity a znovu ich “prehrá” nad novým základom, môže sa stať, že sa niektorý z nich nedá aplikovať bez konfliktu - presne tak, ako sme si konflikt popísali v predchádzajúcej lekcii.

Priebeh

Predstav si, že počas git rebase -i HEAD~3 (napríklad kvôli zmene poradia commitov) nastane konflikt pri aplikovaní jedného z nich. Rebase sa zastaví a Git vypíše niečo podobné:

Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply 4d66c25... Pridanie tlačidla

Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".

Vyriešenie konfliktu

  1. Otvor konfliktný súbor (napríklad main.cpp) a nájdi značky <<<<<<<, =======, >>>>>>>
  2. Uprav súbor do finálnej, správnej podoby a značky odstráň
  3. Označ súbor ako vyriešený:
git add main.cpp
  1. Pokračuj v rebase:
git rebase --continue

Ak sa na ceste vyskytne ďalší konflikt (napríklad pri inom commite zo zoznamu), celý postup jednoducho zopakuješ.

Dôležité: Pri interaktívnom rebase sa môže postupne objaviť aj viac konfliktov.

Tip: Príkaz git status ti počas konfliktu vždy povie, ktoré súbory sú ešte nevyriešené - drž sa jeho rád.