Skip to main content

Примеры Merge и Rebase

                                                                                                                                                                  

Git Merge

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

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

branches.clean01.jpg

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

Ветка masterMAIN

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

Develop.to.master.jpg

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

Ветка developDEVELOP

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

Master.to.develop.jpg

Git Rebase

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

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

Branches.clean.jpg

Вариант 1.

Ветка masterMAIN

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

Develop.rebase.to.master.jpg

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

Ветка developDEVELOP

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

Master.rebase.to.develop.jpg

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

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