You can use git cherry-pick
to grab C, and put it on Y. Assuming Y exists as the tip a branch called branch-Y
:
$ git checkout branch-Y
$ git cherry-pick C
So now C is on top of Y. But D and E also still contain C (cherry picking doesn't move a commit, it just makes a copy of it). You'll have to rebase D and E on top of B. Assuming E is the tip of branch-E
and B is branch-B
, you can:
$ git checkout branch-E
$ git rebase --interactive branch-B
This will open up an interactive rebase session. Just remove commit C entirely, and leave D and E intact. You'll then have D and E rebased on top of B without C.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…