VK Cloud

Git rebase vs merge: в чём разница и когда что использовать

10 сентября 2026 г.
Александр Иванов
Автор статьи
_blog_head_20.png

Что такое git rebase

Git rebase переносит серию коммитов текущей ветки на другой базовый коммит. Технически Git откладывает коммиты, которые отличаются от целевой ветки, переключается на неё, а затем поочерёдно применяет отложенные изменения поверх новой базы.

На концептуальном уровне rebase и merge решают разные задачи. Rebase переписывает историю, выстраивая её в линейную цепочку. Merge объединяет истории, сохраняя обе ветки видимыми.

Rebase уместен для локальных feature-веток, которые ещё не опубликованы и на которые не опираются другие участники. Для общих и публичных веток rebase не подходит — почему именно, разберём в разделе про «золотое правило».

Как работает git rebase технически

Процесс состоит из трёх шагов:

  1. Git откладывает коммиты текущей ветки.
  2. Применяет коммиты новой базовой ветки.
  3. Поочерёдно накатывает отложенные коммиты поверх неё.

Каждый перенесённый коммит получает новый SHA-хеш. История не дополняется — она физически переписывается: старые коммиты с исходными хешами перестают быть частью ветки.

Отдельная особенность — разрешение конфликтов. Коммиты применяются последовательно, поэтому конфликт может возникать на каждом переносимом коммите отдельно. При merge конфликты обрабатываются иначе.

Git merge: как это работает

Git merge объединяет две ветки, создавая новый merge-коммит с двумя (или более) родителями. Такой коммит фиксирует момент слияния и сохраняет ссылки на обе исходные линии разработки.

Частный случай — fast-forward merge. Если целевая ветка не расходилась с базой, отдельный merge-коммит не создаётся: указатель ветки просто передвигается вперёд.

При обычном (не fast-forward) merge история сохраняется как есть, включая параллельные ветки: видно, где разработка расходилась и где сходилась обратно.

КритерийRebaseMerge
Форма историиЛинейная, без явных точек ветвленияВетвящаяся, с merge-коммитами
Хеши коммитовМеняются — риск для опубликованных ветокНе затрагиваются, добавляется только новый коммит
Разрешение конфликтовНа каждом переносимом коммите отдельноОдин раз для всего набора расходящихся изменений

Интерактивный rebase (git rebase -i)

Интерактивный режим git rebase -i открывает редактор со списком коммитов и набором команд: squash, fixup, reword, edit, drop. Это позволяет перед применением менять порядок коммитов, объединять их, редактировать сообщения и содержимое, а также удалять лишние.

Типичный сценарий — привести в порядок локальные коммиты перед pull request: убрать промежуточные «fix typo», объединить логически связанные изменения в один коммит и сделать историю feature-ветки читаемой для ревьюера.

Важно знать

«Золотое правило» rebase

Основное ограничение сформулировано в Pro Git: не переписывать (rebase) коммиты, которые уже вытолкнуты в общий репозиторий и на которые могут опираться другие участники.

Последствия нарушения: после переписывания истории старые и новые версии коммитов существуют параллельно. Коллеги, продолжившие работу от старых коммитов, получат расхождение истории, дублирование коммитов и конфликты при синхронизации.

Когда выбирать rebase, а когда merge

Feature-ветка перед интеграцией в основную

Rebase даёт чистую линейную историю без лишних merge-коммитов. Лог читается проще.

Синхронизация долгоживущей или публичной ветки

Merge не переписывает чужую историю и не создаёт риска дублирования коммитов.

Смешанный подход

Распространённая практика: rebase локально, пока ветка не опубликована, а при интеграции в основную ветку — merge или fast-forward.

Оставьте заявку, чтобы получить консультацию

Наши специалисты свяжутся с вами в ближайшее время и ответят на все вопросы.

section_subscribe_2x_9ab2d878a6_ac1afd4471.png

            Узнавайте о выходе новых статей в блоге первыми!

            Будем держать в курсе новостей и облачных трендов

            section-subscribe_2x.png
              section-subscribe_2x.png
              Теги: Git, управление версиями, git rebase, git merge, git rebase -i
              Ссылка скопирована
              Поделиться

              Почитать по теме

              _blog_head_8.png
              9 сентября

              Перенос дисков PV в Managed Kubernetes от VK Cloud: данные переживают кластер

              _blog_head_181.png
              9 сентября

              Кластеры второго поколения в Managed Kubernetes от VK Cloud: что берёт на себя платформа

              40+ готовых сервисов