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

Что такое git rebase?

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

`git rebase` переносит коммиты текущей ветки поверх другой ветки, создавая их заново.

Пример

git switch feature
git rebase main

Было: feature ответвилась от старого main. Стало: коммиты feature идут после последнего коммита main, история линейная.

Интерактивный rebase

git rebase -i HEAD~3

Позволяет склеить (squash), переименовать (reword), переставить или удалить коммиты перед pull request.

Конфликты

Rebase применяет коммиты по одному — конфликт может возникнуть на каждом. Исправляем, git add, git rebase --continue; отменить всё — git rebase --abort.

Главное правило

Не ребейзить коммиты, которые уже есть у других: у них хеши изменятся, и истории разойдутся. После rebase своей запушенной ветки нужен git push --force-with-lease.

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

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

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

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