У чому основна різниця між 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 merge | git rebase |
|---|---|---|
| Історія | Зберігається | Переписується |
| Merge-коміт | Так (зазвичай) | Ні |
| Безпека | Безпечний для спільних гілок | Небезпечний для спільних гілок |
| Історія | Розгалужена | Лінійна |
| Конфлікти | Один раз | Можливі кілька разів |
| Використання | Командна робота | Локальна робота |
Коли що використовувати
Використовуй merge, якщо:
- гілка спільна
- код уже запушено
- важлива повна історія
- працюєш у команді
merge - безпечний варіант за умовчанням
Використовуй rebase, якщо:
- гілка тільки твоя
- хочеш охайну історію
- готуєш код до merge
- оновлюєш feature-гілку з
main
rebase - для наведення ладу
Популярне формулювання для співбесіди
git mergeоб'єднує гілки, зберігаючи історію і створюючи merge-коміт, аgit rebaseпереносить коміти однієї гілки поверх іншої, переписуючи історію і роблячи її лінійною.
Золоте правило (часто запитують)
Ніколи не роби rebase публічних гілок Merge можна робити завжди
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.