git apply changes from one commit onto another branch
I want to do something similar to git rebase but without collapsing parallel commits.
Let's say I have the following commits:
B (bar)
/
A-C-D (foo)
Now I want to take the changes that D introduced to C in branch foo, and apply them to B in branch bar. so that I end up with the following:
B-E (bar)
/
A-C-D (foo)
Where the difference between commits B and E is equal to difference between commits C and D. Is this possible? Is there a way to do it without creating a patch?
Solution 1:
Yes:
git checkout -b mergebranch B
git cherry-pick D
Solution 2:
In my case I needed to apply the changes of specific commits of another branch. I did that by cherry picking them like so:
git cherry-pick COMMIT-HASH
.
Solution 3:
If the last commit on the branch that you want to cherry-pick out of (foo in the example) is a merge commit, you can point at the specific commit to cherry pick by using git cherry-pick branchname~1
to get the commit which was the parent of the merge.