Skip to main content

У чому основна різниця між merge і rebase?

Основна різниця між git merge і git rebase - у тому, як вони працюють з історією комітів.

merge зберігає історію, rebase переписує історію.


Ключова ідея (дуже важливо для співбесіди)

  • git merge - «об'єдную гілки, як є»
  • git rebase - «переписую свої коміти так, ніби вони були зроблені пізніше»

Візуальне порівняння

git merge

A---B---C---F---M (main) \ / D---E---
  • створюється merge-коміт
  • видно, що була окрема гілка
  • історія розгалужується

git rebase

A---B---C---D'---E' (feature)
  • merge-коміту немає
  • історія лінійна
  • коміти D і E стали новими

Головна відмінність в одному абзаці

Параметрgit mergegit rebase
ІсторіяЗберігаєтьсяПереписується
Merge-комітТак (зазвичай)Ні
БезпекаБезпечний для спільних гілокНебезпечний для спільних гілок
ІсторіяРозгалуженаЛінійна
КонфліктиОдин разМожливі кілька разів
ВикористанняКомандна роботаЛокальна робота

Коли що використовувати

Використовуй merge, якщо:

  • гілка спільна
  • код уже запушено
  • важлива повна історія
  • працюєш у команді

merge - безпечний варіант за умовчанням


Використовуй rebase, якщо:

  • гілка тільки твоя
  • хочеш охайну історію
  • готуєш код до merge
  • оновлюєш feature-гілку з main

rebase - для наведення ладу


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

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


Золоте правило (часто запитують)

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

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

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

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