Назад к подготовке

Чем отличается git merge от rebase

Интервьюер спрашивает про командную работу с Git: что делает merge, что делает rebase и когда какой подход выбирать?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Merge сохраняет историю ветвления и создает merge commit, если нужно. Rebase переносит commits ветки на новую базу и переписывает их, делая историю линейнее.

Полный разбор
git merge объединяет две ветки, сохраняя факт, что разработка шла параллельно. Если fast-forward невозможен, появляется merge commit с двумя parents. Это хорошо сохраняет контекст интеграции, но история может быть более ветвистой. git rebase берет commits текущей ветки и применяет их поверх нового base. Получаются новые commit hashes, потому что история переписывается. Плюс — линейная история и проще читать последовательность изменений. Минус — нельзя бездумно rebase-ить общую ветку, от которой уже работают другие люди.

Практичное правило: локальную feature branch можно rebase-ить перед PR, чтобы убрать лишние merge commits. Общие опубликованные ветки лучше не переписывать без договоренности команды.

Теория

Merge и rebase — это не вопрос "что лучше", а вопрос team workflow: сохранить граф истории или получить линейную историю ценой переписывания commits.

Типичные ошибки

  • Говорить, что rebase просто "сливает ветки".
  • Rebase-ить shared master/main.
  • Не понимать, почему меняются commit hashes.

Как отвечать на собеседовании

  • Скажи коротко: merge preserves history, rebase rewrites branch commits.
  • Обязательно упомяни правило безопасности для опубликованных веток.