> В чем разница между git rebase и merge (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: ХАБ, Фабрика решений, Сбер

Стек: Python

> Пример ответа

Основное различие между git rebase и git merge заключается в том, как они интегрируют изменения из одной ветки в другую и как формируют историю коммитов.

git merge создает новый коммит слияния (merge commit), который объединяет две ветки. История остается полной и нелинейной - видны все параллельные разработки. Это безопаснее для публичных веток, так как не переписывает историю.

git rebase переносит (перебазирует) коммиты текущей ветки на вершину целевой ветки, создавая линейную историю без лишних merge-коммитов. Это делает историю чище, но переписывает коммиты (изменяет их хеши), что опасно для веток, используемых другими разработчиками.

Пример на Python (для демонстрации концепции, не команды Git):

PYTHON
# merge: сохраняет все параллельные пути
# A---B---C---D (merge commit)
# \ /
# E---F
# rebase: выстраивает линейно
# A---B---E'---F'

Когда что использовать:

  • merge - для публичных веток (например, main), когда важна полная история.
  • rebase - для локальных или feature-веток перед отправкой в PR, чтобы избежать "мусорных" merge-коммитов.

Важно: Никогда не делайте rebase на ветках, которые уже кто-то использует (например, общий develop), иначе вы сломаете историю у коллег.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью