Codementor Events

Understanding Git Cherry-pick: How to Use

Published Nov 28, 2016Last updated Jan 18, 2017
Understanding Git Cherry-pick: How to Use

What is Git cherry-pick?

Git is the most widely used modern version control system in the world. A large number of software projects depend on Git for version control (both commercial and other open-sourced projects). If you're a beginner, you can get started on this beginner's guide to git and github.

One of its commands that I've found very useful especially when working with large teams is "git cherry-pick", along with other features such as git-flow, and even this guide to common git problems and their fixes.

But cherry-picking simply means picking a commit from a branch and applying that commit onto another branch. It is more useful for sampling out a small subset of changes from a topic branch you've decided to delete, but you still got some useful commits on it. This will introduce a new, distinct commit.

Use Cases

Cherry-picking becomes very useful and essential when it comes to bug fixing. This is because bugs are fixed and tested on the development branch with their respective snapshots (committed) — which might have been on a different level from your production branch.

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. This could be averted by doing a git cherry-pick.

This could also be useful whenever a full branch merge is not possible due to incompatible versions in the various branches.

Also, you can use git cherry-pick to pull the changes introduced to a sub-branch, without changing the branch, by your colleague working on the same project.

How do you do GIT cherry-pick?

Let's consider a git repo with two branches and some snapshots as shown below:
git cherry-pick

The image above shows a git repo with the master branch having A,B,C,D commits and cherry-pick branch with E,F,G commit.

To cherry-pick a particular commit from the master (i.e C) into "cherry-pick" branch:

  • go to the branch that has the commit you want to cherry-pick and run
git checkout master
  • Obtain the commit hash by typing
git log

Alternatively, go to your GitHub page and copy the commit hash.

  • Checkout the branch you want to have the commit (i.e cherry-pick)
git checkout cherry-pick
  • Cherry-pick the commit by running:
git cherry-pick C

upon running the last command, your snapshot will now look like this
git cherry-pick

The cherry-pick branch now has just the snapshot C in the master branch

Why do a GIT cherry-pick

As stated above while defining what a git cherry-pick is, you will mostly cherry-pick a snapshot instead of merging the whole branch into the current branch.

Discover and read more posts from Olatunde Michael Garuba
get started
post commentsBe the first to share your opinion
Eddie Staples
5 years ago

Thanks for sharing! A clear and to-the-point explanation.

Show more replies