Problem: You want to test a feature someone has developed, but it only exists in a remote branch which is woefully out of date.
Source
Problem: You want to test a feature someone has developed, but it only exists in a remote branch which is woefully out of date.
If you merged or rebased, you'd get a bunch of old changes in, possibly conflicting.
With cherry picking, you take one change set, and replay that as a new commit over another branch.
This is useful if you just want one commit onto another branch, without its history.
It's useful to use the -x
option, so the commit message contains a note where it was cherry picked from.
Why won't I use git am or git apply?
because git apply is for applying patches (files), and git am for applying series of patches. git cherry-pick applies commits - i.e., commits from your own repo, vs commits you import from other repos.
From git help cherry-pick
:
git-cherry-pick - Apply the changes introduced by some existing commits
[...]
Given one or more existing commits, apply the change each one introduces, recording a new commit for each. This requires your working tree to be clean (no modifications from the HEAD commit).
So, when you cherry-pick
a commit, git
takes that commit's changes (its diff
) and tries to apply it on your current working directory, creating a new commit that is equivalent to the one you are cherry-pick
ing.
It's a way to re-do another commit's changes on a different history line.
Besides taking the changes, cherry-pick
also preserves the original commit's info like author and that.
Lastly, cherry-pick
can receive a group of commits to apply, in which case it would act like cherry-pick
ing them one by one, in chronological order (older first).
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