I'm sure this is a simple thing that has been asked and answered, but I don't know what terms to search for. I have this:
/--master--X--Y A--B \--C--D--E
Where I commited C, D, and E (locally only) on a branch, but then I realized that D and E are really independent of C. I want to move C to its own branch, and keep D and E for later. That is, I want this:
/--C /--master--X--Y A--B \--D--E
How do I yank C out from under D and E?
You can move commits from one branch to another branch if you want changes to be reflected on a different branch than the one to which you pushed the changes.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With