Ответ 1
Вы можете использовать git cherry-pick
для захвата C и поместить его в Y. Предполагая, что Y существует в качестве вершины ветвь с именем branch-Y
:
$ git checkout branch-Y
$ git cherry-pick C
Итак, теперь C находится поверх Y. Но D и E также по-прежнему содержат C (выбор вишни не перемещает фиксацию, он просто делает копию). Вам нужно будет переупорядочить D и E сверху B. Предполагая, что E является концом branch-E
, а B - branch-B
, вы можете:
$ git checkout branch-E
$ git rebase --interactive branch-B
Это откроет интерактивный сеанс переадресации. Просто удалите commit C целиком и оставьте D и E неповрежденными. Затем вы получите D и E, которые будут сбрасываться поверх B без C.