ApiaryActive
Try: pause · settings · learn · wipe
← Community / Reading Room
GC
git · 2 min read

git cherry pick mastery

=====================================================

=====================================================

Have you ever found yourself in a situation where you need to bring changes from one branch into another? Maybe you've been working on a feature branch and want to incorporate some recent bug fixes from the main branch, or perhaps you're trying to revive an old commit that's no longer reachable. Whatever your use case, git cherry-pick is here to help.

In this article, we'll delve into the world of git cherry-pick, exploring its usage, benefits, and best practices for mastering this powerful Git command.

The Technique


git cherry-pick allows you to take a commit from one branch and apply it to another. This is achieved by replaying the original commit on top of your current branch, creating new commits with identical changes. Think of it as "copy-and-paste" for commits!

Here's the basic syntax:

git cherry-pick <commit-hash>

Replace <commit-hash> with the hash of the commit you want to bring over.

Concrete Examples


Example 1: Bringing in Bug Fixes

Suppose we have two branches, main and feature/new-feature. We've been working on a new feature branch but need to incorporate some recent bug fixes from the main branch. We can use git cherry-pick to bring these fixes into our feature branch:

# Switch to feature branch
git checkout feature/new-feature

# Cherry-pick commits from main branch (e.g., last 3 commits)
git cherry-pick main~2..main

This will replay the three most recent commits from the main branch onto your current feature/new-feature branch.

Example 2: Reviving an Old Commit

Let's say we have a commit on our main branch that was accidentally pushed to another repository. We want to retrieve this commit and apply its changes back into our main branch:

# Get the commit hash from the other repository (e.g., GitHub)
git checkout main
git cherry-pick <commit-hash>

Replace <commit-hash> with the actual hash of the commit you're trying to revive.

Example 3: Resolving Conflicts

When using git cherry-pick, conflicts will arise if the original commit has changes that overlap with your current branch. To resolve these conflicts, use the same conflict resolution strategies as when resolving merge conflicts:

# Cherry-pick a commit and encounter conflicts
git checkout feature/new-feature
git cherry-pick main~2..main

# Resolve conflicts (e.g., manually edit files)
# ...

# Commit resolved changes
git add .
git commit -m "Conflict resolution"

When NOT to Use Git Cherry-Pick


While git cherry-pick is a powerful tool, there are situations where it's not the best choice:

  • Avoid using git cherry-pick for rebasing or rewriting history. This can lead to unnecessary complexity and confusion.
  • Don't use git cherry-pick for merging. Instead, use git merge, which is specifically designed for combining branches.

Related Apiary Lessons


If you're new to Git or looking for more in-depth knowledge, be sure to check out the following Apiary lessons:

Conclusion


Mastering git cherry-pick takes practice, but with these examples and guidelines, you'll be well on your way to effortlessly bringing commits across branches. Remember to use this powerful command judiciously, resolving conflicts as needed.

As the bees say: "Cherry pick wisely, for in the hive of code, every commit counts!"

Frequently asked
What is git cherry pick mastery about?
=====================================================
What should you know about the Technique?
git cherry-pick allows you to take a commit from one branch and apply it to another. This is achieved by replaying the original commit on top of your current branch, creating new commits with identical changes. Think of it as "copy-and-paste" for commits!
What should you know about example 1: Bringing in Bug Fixes?
Suppose we have two branches, main and feature/new-feature . We've been working on a new feature branch but need to incorporate some recent bug fixes from the main branch. We can use git cherry-pick to bring these fixes into our feature branch:
What should you know about example 2: Reviving an Old Commit?
Let's say we have a commit on our main branch that was accidentally pushed to another repository. We want to retrieve this commit and apply its changes back into our main branch:
What should you know about example 3: Resolving Conflicts?
When using git cherry-pick , conflicts will arise if the original commit has changes that overlap with your current branch. To resolve these conflicts, use the same conflict resolution strategies as when resolving merge conflicts:
References & sources
  1. Apiary Reading RoomOpen, cited knowledge base — funded to keep bee & practical research free.
From the Apiary Reading Room. Opinion & editorial — not financial advice. We don't overclaim.
More from the Reading Room