Skip to main content

Що робить git rebase з історією?

git rebase змінює історію комітів, переписуючи її так, ніби коміти були зроблені в іншому місці історії.

Простіше: rebase переносить коміти і створює їх заново, роблячи історію більш лінійною.


Що саме відбувається при git rebase

Уявимо ситуацію:

A---B---C (main) \ D---E (feature)

Ти перебуваєш у feature і робиш:

bash
git rebase main

Git:

  1. тимчасово «прибирає» коміти D і E
  2. переносить вказівник feature на C
  3. створює нові коміти 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)
  • видаляти коміти
  • змінювати порядок
bash
git rebase -i HEAD~3

Це класичне питання рівня "middle+/senior".


Головне правило (обов'язково сказати)

Не можна робити rebase для публічних комітів.

Формулювання для співбесіди:

Rebase безпечний тільки для локальних або ще не опублікованих гілок.


rebase vs merge (дуже коротко)

  • merge зберігає історію як є
  • rebase переписує історію

Короткий відповідь для співбесіди

git rebase переписує історію, пересоздаючи коміти поверх іншої точки історії, через що змінюються їхні hash і історія стає лінійною.


Часта помилка кандидатів

Неправильно: «rebase просто переміщує гілку» Правильно: він пересоздає коміти, а не рухає їх.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.