Добавить объявление

Git Merge vs Rebase: В чем разница?

Обе команды объединяют изменения из одной ветки в другую, но делают это по-разному.

Git Merge:


Создает новый коммит слияния, сохраняя историю всех веток.

# Переключись на ветку, куда нужно влить изменения (например main).
git checkout main

# Влить изменения из ветки feature.
git merge feature


Плюсы:

  • Простота использования.

  • Сохраняет полную историю.


Минусы:

  • Захламляет историю коммитами слияния.

Git Rebase:


Перемещает ваши коммиты в другую ветку, перезаписывая историю другой ветки таким образом, будто вы только что ответвились от этой ветки и добавили новые коммиты. Все прошлые коммиты в истории данной ветки будут до ваших коммитов.

# Переключись на feature ветку.
git checkout feature

# Перебазировать ее на main.
git rebase main


Плюсы:

  • Чистая, линейная история.

  • Нет лишних коммитов слияния.


Минусы:

  • Может усложнить работу в команде (переписывает историю).


Когда вы делаете rebase, Git фактически переписывает историю коммитов - создает новые коммиты с тем же содержимым, но другим хешем.
Если вы уже запушили ветку в удаленный репозиторий, обычный git push без --force не сработает, потому что локальная история и на сервере расходится.

git push --force

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


  • Merge: для публичных веток (main, dev).

  • Rebase: для локальных feature веток перед мержем.
23.01.2026 8 257