Проверяет понимание разных стратегий объединения веток Git.
git merge сохраняет историю параллельных веток, создавая merge-коммит при расхождении, а git rebase переписывает историю: переносит коммиты одной ветки поверх другой, создавая линейную историю без merge-коммитов. Merge показывает фактические ветвления, rebase упрощает лог, но меняет SHA коммитов.
git merge:
Fast-forward: если целевая ветка не изменилась, просто двигает указатель.
Three-way merge: при расхождении двух веток создаёт новый коммит с двумя родителями.
Сохраняет топологию ветвлений и merge-коммиты.
git rebase:
Находит общий предок и «отъединяет» коммиты текущей ветки.
Поочерёдно применяет их на обновлённой базе, создавая новые SHA.
Упрощает историю, убирает лишние merge-коммиты.
Плюсы и минусы:
Merge: безопасен, не меняет существующую историю, удобен для публичных веток.
Rebase: линейная история, легче читать, но нельзя делать на общих ветках (переписывает историю).
Когда применять:
Merge: при объединении готовой feature-ветки в main для сохранения контекста.
Rebase: при синхронизации feature-ветки с main перед merge или для уборки истории.