Единственный способ, которым я вижу, - сбросить мастер на F
, сбросить yellow
ветвь на E
, вишневый пик C
и B
на yellow
ветвь, объединить yellow
в master
и наконец вишня D
.
Вы должны создать ветвь backup
в состоянии вашего текущего master
, прежде чем что-либо касаться, чтобы иметь возможность восстановить текущее состояние, если что-то пойдет не так, и иметь легкий доступ к идентификаторам коммитов, которые вам нужны. вишневый выбор. Последовательность команд будет выглядеть примерно так:
#on master branch, with no unstaged or uncommited changes:
git branch backup
git reset --hard F
git checkout yellow
git reset --hard E
git cherry-pick C
git cherry-pick B
#merge yellow branch into master, however you usually do that
git checkout master
git cherry-pick D
Предупреждение: не тестировалось.
Как я уже сказал в своем комментарии, это сильно испортит ситуацию, если кто-то уже работает над старым мастером.
EDIT: если C
- это коммит слияния от D
до yellow
, он, очевидно, не должен выбираться вишней и может игнорироваться.