Вот как это 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>
--cachedпри проверкеgit diff. ссылка