Вот как rebase
работает:
git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>
Предположим, у вас есть
---o----o----o----o master
\---A----B <my branch>
Первые две команды ...
совершить
Git Checkout
git rebase master
... проверить ветку изменений, которые вы хотите применить к ветке master
. Команда rebase
берет коммиты из <my branch>
(которых нет в master
) и повторно применяет их к заголовку master
. Другими словами, родитель первого коммита в <my branch>
больше не является предыдущим коммитом в истории master
, а является текущим заголовком master
. Две команды такие же, как:
git rebase master <my branch>
Возможно, будет проще запомнить эту команду, так как ветки "base" и "modify" явные.
. Окончательный результат истории:
---o----o----o----o master
\----A'----B' <my branch>
Последние две команды ...
git checkout master
git merge <my branch>
... выполнить ускоренное слияние для применения всех <my branch>
изменений к master
. Без этого шага коммит ребаз не добавляется в master
. Окончательный результат:
---o----o----o----o----A'----B' master, <my branch>
master
и <my branch>
обе ссылки B'
. Кроме того, с этого момента можно безопасно удалить ссылку <my branch>
.
git branch -d <my branch>