В чем разница между git rebase и git merge?

«В чем разница между git rebase и git merge?» — вопрос из категории Git, который задают на 29% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

git merge и git rebase — это два разных способа интегрировать изменения из одной ветки в другую, и выбор между ними влияет на историю коммитов.

  • git merge создает новый коммит слияния (merge commit), который объединяет истории двух веток. История сохраняет структуру ветвления.
    # Находясь в ветке main, влить в нее feature-branch
    git checkout main
    git merge feature-branch
  • git rebase переписывает историю, перемещая коммиты из текущей ветки и применяя их поверх указанной ветки. В результате история становится линейной.
    # Переместить коммиты из feature-branch на вершину main
    git checkout feature-branch
    git rebase main

Когда что использовать в DevOps-практике:

  • Использую merge для интеграции фич в общие ветки (например, main, develop), чтобы не переписывать публичную историю. Это стандарт в GitFlow.
  • Использую rebase для локальных веток, чтобы поддерживать чистую, линейную историю перед созданием пул-реквеста. Например, git rebase origin/main в своей фиче-ветке, чтобы разрешить конфликты и упростить ревью.

Видео-ответы