Skip to main content

Примеры Merge и Rebase

                                                                                                                                                                  

Git Merge

Исходный вариант. 

Схема коммитов до объединения веток

branches.clean01.jpg

Вариант 1.
git checkout main
git merge develop

Ветка MAIN

  • Вливаем ветку develop в ветку main. Приоритет ветки master.main.
  • Недостающие коммиты из ветки develop как-бы "налипают сверху" на ветку master.main.
  • Даты коммитов прежние.

Develop.to.master.main.jpg

Вариант 2. [зеркальный]
git checkout develop
git merge mastermain

Ветка DEVELOP

  • Вливаем ветку mastermain в ветку develop. Приоритет ветки develop.
  • Недостающие коммиты из ветки mastermain как-бы "налипают сверху" на ветку develop.
  • Даты коммитов прежние.

Master.to.develop.jpg

Git Rebase

Исходный вариант.

Схема коммитов до перебазирования

Branches.clean.jpg

Вариант 1.

Ветка MAIN

  • Перебазируем коммиты ветки develop в ветку master.main.
  • Ветка mastermain перестраивается от начала по приоритету ветки develop,
  • Коммиты, которые имелись в ветке master,main, но отсутствуют во встраиваемой ветке develop
  • пересоздаются с новым hash и датой от последнего нового коммита встраиваемой ветки develop

Develop.rebase.to.master.main.jpg

Вариант 2. [зеркальный]

Ветка DEVELOP

  • Перебазируем коммиты ветки mastermain в ветку develop
  • Ветка develop перестраивается от начала по приоритету ветки master,main,
  • Коммиты, которые имелись в ветке develop, но отсутствуют во встраиваемой ветке mastermain
  • пересоздаются с новым hash и датой от последнего нового коммита встраиваемой ветки mastermain

Master.rebase.to.develop.jpg

Основное требование при использовании git rebase:

Не производить git rebase с ветками которые вы уже отправили в общий репозиторий.