Вы можете использовать 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
Это откроет интерактивный сеанс перебазирования. Просто полностью удалите коммит C и оставьте D и E нетронутыми. После этого вы переместитесь на D и E поверх B без C.