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

Как работает функция merge?

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

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

Fast-forward

Если в текущей ветке не было новых коммитов с момента ответвления, Git просто передвигает указатель вперёд — нового коммита нет, история линейная.

Трёхстороннее слияние

Если обе ветки менялись, Git берёт три версии: общего предка и концы обеих веток — и объединяет изменения. Результат — merge-коммит с двумя родителями.

git switch main
git merge feature/auth          # fast-forward, если возможно
git merge --no-ff feature/auth  # всегда с merge-коммитом
git merge --squash feature/auth # все изменения одним коммитом без связи веток

Конфликты

Если обе ветки изменили одни и те же строки, Git останавливается и размечает файлы маркерами <<<<<<<, =======, >>>>>>>. Нужно исправить, git add и завершить слияние (git commit или git merge --continue). Отменить — git merge --abort.

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

merge соединяет ветки: fast-forward без нового коммита или трёхстороннее слияние через общего предка с merge-коммитом; конфликты решаются вручную.

Подробнее: Pro Git — Основы слияния

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