Що робить git rebase з історією?
git rebase змінює історію комітів, переписуючи її так, ніби коміти були зроблені в іншому місці історії.
Простіше: rebase переносить коміти і створює їх заново, роблячи історію більш лінійною.
Що саме відбувається при git rebase
Уявимо ситуацію:
A---B---C (main)
\
D---E (feature)Ти перебуваєш у feature і робиш:
git rebase mainGit:
- тимчасово «прибирає» коміти
DіE - переносить вказівник
featureнаC - створює нові коміти
D'іE'поверхC
Результат:
A---B---C---D'---E' (feature)
D' і E' - нові коміти з новими hash, хоча зміни ті самі.
Як це впливає на історію
git rebase:
- переписує коміти
- змінює їхні hash
- робить історію прямою і читабельною
- прибирає зайві merge-коміти
Чому це важливо для співбесіди
Ключова фраза:
git rebaseне переносить коміти буквально - він пересоздає їх.
Це показує розуміння, а не заучування.
Interactive rebase (git rebase -i)
В інтерактивному режимі можна:
- об'єднувати коміти (
squash) - змінювати повідомлення (
reword) - видаляти коміти
- змінювати порядок
git rebase -i HEAD~3Це класичне питання рівня "middle+/senior".
Головне правило (обов'язково сказати)
Не можна робити rebase для публічних комітів.
Формулювання для співбесіди:
Rebase безпечний тільки для локальних або ще не опублікованих гілок.
rebase vs merge (дуже коротко)
mergeзберігає історію як єrebaseпереписує історію
Короткий відповідь для співбесіди
git rebaseпереписує історію, пересоздаючи коміти поверх іншої точки історії, через що змінюються їхні hash і історія стає лінійною.
Часта помилка кандидатів
Неправильно: «rebase просто переміщує гілку» Правильно: він пересоздає коміти, а не рухає їх.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.