I have two branches. Commit
a is the head of one, while the other has
f on top of
a. I want to move
f to first branch without commit
b. Using cherry pick it is easy: checkout first branch cherry-pick one by one
f and rebase second branch onto first. But is there any way to cherry-pick all
f in one command?
Here is a visual description of the scenario (thanks JJD):
Git 1.7.2 introduced the ability to cherry pick a range of commits. From the release notes:
git cherry-pick learned to pick a range of commits
cherry-pick A..B and
cherry-pick --stdin), so did
git revert; these do not support the nicer sequencing control
rebase [-i] has, though.
To cherry-pick all the commits from commit
A to commit
A is older than
git cherry-pick A^..B
If you want to ignore A itself, run:
git cherry-pick A..B
Notes from comments:
A should be older than
A should be from another branch.
- On Windows, it should be
A^^..B as the caret needs to be escaped, or it should be
"A^..B" (double quotes).
zsh shell, it should be
'A^..B' (single quotes) as the caret is a special character.
- For an exposition, see the answer by Gabriel Staples.
(Credits to damian, J. B. Rainsberger, sschaef, Neptilo, Pete and TMin in the comments.)