What does cherry-picking a commit with Git mean?
Recently, I have been asked to cherry-pick
a commit.
So what does cherry-picking a commit in git mean? How do you do it?
Cherry picking in Git means to choose a commit from one branch and apply it onto another.
This is in contrast with other ways such as merge
and rebase
which normally apply many commits onto another branch.
-
Make sure you are on the branch you want to apply the commit to.
git switch master
-
Execute the following:
git cherry-pick <commit-hash>
N.B.:
-
If you cherry-pick from a public branch, you should consider using
git cherry-pick -x <commit-hash>
This will generate a standardized commit message. This way, you (and your co-workers) can still keep track of the origin of the commit and may avoid merge conflicts in the future.
-
If you have notes attached to the commit they do not follow the cherry-pick. To bring them over as well, You have to use:
git notes copy <from> <to>
Additional links:
- git official guide page
This quote is taken from: Version Control with Git
Using git cherry-pick The command git cherry-pick commit applies the changes introduced by the named commit on the current branch. It will introduce a new, distinct commit. Strictly speaking, using git cherry-pick doesn’t alter the existing history within a repository; instead, it adds to the history. As with other Git operations that introduce changes via the process of applying a diff, you may need to resolve conflicts to fully apply the changes from the given commit . The command git cherry-pick is typically used to introduce particular commits from one branch within a repository onto a different branch. A common use is to forward- or back-port commits from a maintenance branch to a development branch.
$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, below
before:
after:
Also, here is a very nice in action video tutorial about it: Youtube: Introduction to Git cherry-pick