PassFront
  1. PassFront
  2. База знаний
  3. Слияние, rebase и конфликты

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

Слияние, rebase и конфликты

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

merge

git switch feature
git merge main
  • История честная: видно, когда ветки разошлись и сошлись.
  • Не переписывает существующие коммиты — безопасно для общих веток.
  • Минус: много merge-коммитов делают историю шумной.

rebase

git switch feature
git rebase main
  • Коммиты ветки пересоздаются поверх main с новыми хешами.
  • История линейная и читаемая.
  • Нельзя ребейзить ветки, которые уже запушены и используются другими: у них история разойдётся.

Как выбирать

Свою локальную ветку перед PR удобно обновить через rebase. Общие ветки объединяют через merge.

Коротко для собеседования

merge сохраняет историю и добавляет коммит слияния, rebase переписывает коммиты ради линейной истории; публичные ветки не ребейзят.

Подробнее: Pro Git — перебазирование

Другие вопросы раздела