Чем отличается 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.
- Обязательно упомяни правило безопасности для опубликованных веток.