Разница rebase и merge
Разница между git merge
и git rebase
заключается в том, как они объединяют изменения из одной ветки в другую и как это отражается на истории коммитов.
1. Merge
Что делает: Объединяет изменения двух веток, создавая новый коммит слияния.
История: Сохраняет все ветки и коммиты, история может быть разветвлённой.
Плюсы:
Сохраняется полный контекст работы веток.
Безопасно для публичных веток.
Минусы:
История может быть «засорённой» множеством merge-коммитов.
Пример:
main: A --- B
feature: C --- D
merge: A --- B --- M
\ C --- D
M
— merge-коммит.
Команда:
git checkout main
git merge feature
2. Rebase
Что делает: Переносит коммиты одной ветки на вершину другой ветки, переписывая историю.
История: Линейная, без merge-коммитов.
Плюсы:
Чистая, линейная история.
Удобно для подготовки ветки перед объединением с основной.
Минусы:
Переписывает историю, небезопасно на публичных ветках, которыми пользуются другие.
Пример:
main: A --- B
feature: C --- D
rebase: A --- B --- C' --- D'
C'
иD'
— новые коммиты с теми же изменениями.
Команда:
git checkout feature
git rebase main
Ключевое различие
Merge: сохраняет историю ветвления, добавляет merge-коммит.
Rebase: «переписывает» коммиты так, как будто они были созданы на основе целевой ветки, история становится линейной.
Last updated
Was this helpful?