Cherry Pick a Commit in Git – A Definitive Guide

How to Cherry Pick a Commit in Git

Git is a powerful version control system that helps developers track and manage code changes. One of the lesser-known but incredibly useful commands in Git is git cherry-pick. This command allows you to select specific commits from one branch and apply them to another. It’s like picking cherries; you only take what you need! Whether you’re working on a feature, fixing a bug, or merging changes, git cherry-pick can save you time and effort.

In this guide, we will show you how to cherry pick a commit in Git.

Let’s dive right in and improve your Git workflow.

What is Git Cherry Pick?

Git cherry-pick is a command that lets you copy a commit from one branch to another. Unlike merging or rebasing, which deal with multiple commits, cherry-picking focuses on individual commits. This makes it ideal for situations where you want to apply a specific change without merging an entire branch.

Common Use Cases:

  • Applying a bug fix from a hotfix branch to a development branch.
  • Porting specific features from one branch to another.
  • Reusing commits across multiple branches without merging.

Understanding the Git Cherry Pick Command

The basic syntax for the git cherry-pick command is simple:

 # git cherry-pick commit-hash

Here’s how it works:

  • You identify the commit you want to cherry-pick by its hash.
  • Then, you run the git cherry-pick command followed by the commit hash.
  • Git applies the changes from that commit to your current branch.

Example:

Suppose you want to cherry-pick a commit with the hash a1b2c3d, run:

 # git cherry-pick a1b2c3d

Git Cherry Pick Commit: Step-by-Step Example

Let’s walk through a simple example. Imagine you have a bug fix on a branch called bugfix. You want to apply this fix to your main branch.

1. First, switch to your main branch:

 # git checkout main

2. Next, find the commit hash of the bug fix in the bugfix branch:

 # git log bugfix

Look for the commit you want to cherry-pick and note the hash, like d4e5f6g.

3. Now, cherry-pick the commit:

 # git cherry-pick d4e5f6g

This will applies the changes to your repository.

Cherry Pick Merge Commit in Git

Cherry-picking a merge commit can be tricky. Here’s how to do it:

1. Identify the merge commit hash.

2. Use the -m option to specify the parent you want to use:

 # git cherry-pick -m 1 merge-commit-hash

3. Resolve any conflicts that arise. Conflicts are common when cherry-picking merge commits.

Cherry Picking in GitHub/GitLab

GitHub makes cherry-picking easy through its web interface.

1. Login to your GitHub account and navigate to the pull request containing the commit you want to cherry-pick.

2. Click on the commit to view its details.

3. Use the “Cherry-pick” option available in GitHub’s UI.

GitHub will apply the commit to the branch you specify.

Git Cherry Pick Without Commit

Sometimes, you want to apply changes without committing immediately. Use the –no-commit option:

 # git cherry-pick commit-hash --no-commit

Git will apply the changes but won’t create a commit. You can review the changes manually before committing them.
The –no-commit option is useful when you want to cherry-pick changes and include them in a larger commit. This will help you to edit the changes before finalizing them.

Conclusion

The git cherry-pick command is a powerful tool in your Git arsenal. It allows you to select and apply specific commits with precision. Whether you’re fixing bugs, porting features, or managing changes across branches, cherry-picking can help you maintain a clean and efficient workflow. Practice using it, and soon it will become a natural part of your Git toolkit.

FAQs

1. Can I cherry-pick multiple commits at once?

Yes, you can cherry-pick multiple commits by specifying a range of commit hashes.

2. How do I undo a cherry-pick?

You can undo a cherry-pick by running: git cherry-pick --abort

3. Does cherry-picking preserve the original commit hash?

No, the commit will be applied with a new hash, but the changes remain the same.

4. How to get commit id for cherry pick?

You can run the git log --oneline command to display a list of commits with their corresponding short commit IDs. You can use the commit ID from this list for the cherry-pick command.

About Hitesh Jethva

I am Hitesh Jethva Founder and Author at LinuxBuz.com. I felt in love with Linux when i was started to learn Linux. I am a fan of open source technology and have more than 15+ years of experience in Linux and Open Source technologies.

View all posts by Hitesh Jethva