Skip to main content

Примеры Merge и Rebase

                                                                                                                                                                  

Git Merge

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

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

branches.clean01.jpg

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

Ветка MAIN

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

Develop.to.main.jpg

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

Ветка DEVELOP

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

Master.to.develop.jpg

Git Rebase

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

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

Branches.clean.jpg

Вариант 1.

Ветка MAIN

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

Develop.rebase.to.main.jpg

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

Ветка DEVELOP

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

Master.rebase.to.develop.jpg

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

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