Давайте начнем с диаграммы ветвления:
master: A -- B -- C
\
LoginFeature: D -- E
\
Dashboard: F -- G
Вы хотите получить эту структуру:
LoginFeature: D -- E
/
master: A -- B -- C
\
Dashboard: F' -- G'
Мы можем попробовать использовать git rebase --onto
здесь:
# from your Dashboard branch
git checkout Dashboard
git rebase --onto C E
Это говорит о том, что необходимо перебазировать ветку Dashboard
путем переписывания истории таким образом, чтобы коммит, родитель которого был E
(что на диаграмме выше F
), теперь находится на новом коммите / базе C
.Здесь C
- это последний коммит в ветви master
.
Обратите внимание, что я пометил F'
и G'
коммит после перебазировки с тире.Это означает, что эти коммиты на самом деле полностью новые коммиты.Перебазирование коммитов обычно означает их переписывание.
Кроме того, ваша фактическая ветвь Dashboard
имеет коммит слияния, исходящий из master
.Но rebase по умолчанию будет игнорировать коммиты слияния, поэтому его нужно отбросить во время перебазирования в процесс.