Join us December 10-11, 2024
| Developer Experience + AI Conference
Register now free →
Search
Close this search box.

What is the Git cherry pick command?

Before we dive into cherry picking in Git, let’s do a quick refresher on commits. A Git commit is a snapshot of your repository at one point in time, with each commit cumulatively forming your repo history.

Cherry Pick snapshot example

GitKraken’s intuitive UI makes it easy to perform a cherry pick because you can clearly see all of your commits in a visual graph.

How do I cherry pick a commit in Git?

In Git, the cherry pick command takes changes from a target commit and places them on the HEAD of the currently checked out branch.

From here, you can either continue working with these changes in your working directory or you can immediately commit the changes onto the new branch.

Cherry Pick visualization

When should I use the Git cherry pick command?

The cherry pick command can be helpful if you accidentally make a commit to the wrong branch. Cherry picking allows you to get those changes onto the correct branch without redoing any work.

What happens to the commit after it’s been cherry picked onto the new branch? From here, you can either continue working with the changes before committing, or you can immediately commit the changes onto the target branch.

What’s the difference between cherry picking and merging in Git?

Cherry picking is one method of moving a commit from one branch to another in Git. But be warned! Use the cherry pick command sparingly as overusing it can lead to duplicate commits and a messy repo history.

Cherry Pick Duplicate

Another method for moving a commit to another branch in Git—which may be preferred to cherry pick in order to preserve commit history—is a merge.

Cherry Pick Merge

Learn more about how to Git merge and what happens when you encounter a merge conflict.

Git Cherry Pick Example

Now that we’ve gone over what cherry picking is, let’s see how to put your newfound ability to use! First, we’re going to go over how to cherry pick using the GitKraken Git GUI before walking through how to Git cherry pick in the command line.

Git Cherry Pick Example in GitKraken

First, let’s take a look at how the cherry pick action works using the cross-platform GitKraken Git GUI.

Reduce the risk of error! See your commits listed clearly in the GitKraken Git GUI before you cherry pick.

A huge benefit of using GitKraken is the constant visual context of your graph. You can easily see all of your commits listed in chronological order, with your most recent commit on the top.

There’s no need to run a command to display your graph, and you don’t even have to obtain the SHA for your target commit. GitKraken will take care of all of that for you.

In this cherry pick example, let’s say you have one branch—feature-A—checked out, and you commit your changes to said branch using the commit panel.

Drat! You just realized the commit should have been made to a different branch: feature-B. Rather than going back to redo your work, you’re going to cherry pick the commit instead.

To cherry pick in GitKraken, double click your target branch—in this case feature-B—to check it out. Next, right-click the target commit from the feature-A branch; this will open a context menu. From here, you can select Cherry pick commit.

Now, you have two options. You can immediately commit the changes to the feature-B branch, or you can keep working on them. If you choose the latter, GitKraken will add the changes to your working directory as part of the WIP node.

You’re not done yet! To ensure you keep a clean repo history, let’s go back and checkout the feature-A branch and do a hard reset on the parent commit. This will remove the duplicate commit from the feature-A branch.

Git Cherry Pick Example in the Command Line

To begin the process of cherry picking in the CLI, you will first need to obtain the SHA for the commit you wish to cherry pick.

Because the terminal lacks the constant visual context of a graph, you will likely need to run

git log --all --decorate --oneline --graph

to display your graph and obtain the SHA for your target commit.

After copying the SHA from your log, you can then run

git cherry-pick

followed by the SHA to cherry-pick the target commit.

If the command performed a cherry pick correctly, a new commit should be visible with a unique SHA.

Cherry Pick from the CLI

You can also verify that everything looks good by running

git log --all --decorate --oneline --graph

again to view your graph, which should now show the new commit at the top of the graph with its SHA identifier (highlighted above).

Ready to cherry pick with more confidence?

The GitKraken Git client gives you more control over your cherry pick, clearly listing all of your commits in the central graph so you know exactly what’s going on before you start messing around with your repository.

Additional Resources

Table of Contents

Make Git Easier, Safer &
More Powerful

with GitKraken

Visual Studio Code is required to install GitLens.

Don’t have Visual Studio Code? Get it now.

Team Collaboration Services

Secure cloud-backed services that span across all products in the DevEx platform to keep your workflows connected across projects, repos, and team members
Launchpad – All your PRs, issues, & tasks in one spot to kick off a focused, unblocked day. Code Suggest – Real code suggestions anywhere in your project, as simple as in Google Docs. Cloud Patches – Speed up PR reviews by enabling early collaboration on work-in-progress. Workspaces – Group & sync repos to simplify multi-repo actions, & get new devs coding faster. DORA Insights – Data-driven code insights to track & improve development velocity. Security & Admin – Easily set up SSO, manage access, & streamline IdP integrations.
winget install gitkraken.cli