Ione Souza Junior

Git Cherry-Pick: Selectively Applying Commits

March 29, 2024 | 2 Minute Read | Translations: pt | #git

Cherry-picking in Git is a powerful technique that allows you to choose specific commits from one branch and apply them to another. This can be particularly useful when you want to bring in individual changes from one branch to another without merging the entire branch. In this post we'll see how this command works!

Understanding git cherry-pick

The git cherry-pick command is a powerful tool in Git that allows you to select specific commits from one branch and apply them to another branch. This selective approach to integrating commits enables developers to incorporate individual changesets into their codebase without merging entire branches.

When you execute git cherry-pick <commit-hash>, Git identifies the specified commit and copies its changes onto the current branch. This process effectively replicates the commit’s changes, creating a new commit with a distinct hash.

Cherry-picking is particularly useful when you need to incorporate specific changes from one branch into another without bringing along unrelated commits. This targeted approach to commit integration helps maintain a clean and focused commit history, making it easier to track and understand the evolution of the codebase.

Suppose you’ve identified a critical bug fix in a feature branch that needs to be applied to the main development branch. Instead of merging the entire feature branch, which may contain additional changes that aren’t ready for integration, you can cherry-pick the bug fix commit and apply it directly to the main branch. This ensures that only the necessary changes are incorporated, minimizing the risk of introducing unintended modifications.

Similarly, cherry-picking can be used to selectively backport bug fixes or apply specific features to different branches, such as a stable release branch. By cherry-picking individual commits, you have fine-grained control over which changes are included in each branch, allowing for targeted updates and efficient code management.

Example usage

Suppose you have a feature branch where you’ve made some changes and committed them. Now, you want to bring in just one of those commits into your main branch:

git cherry-pick <commit-hash>

This command will take the commit from your feature branch and apply it to your current branch. Sometimes, when cherry-picking a commit, Git may encounter conflicts if the changes in the commit conflict with changes in the current branch. In such cases, Git will pause the cherry-pick process and ask you to resolve the conflicts manually.

Conclusion

Usually I use this command when I’m making big changes in the codebase and need to split them in different pull requests for my teammates to review it. I can do this because I typically make several commits when I’m developing, typically one for each significant change I make to the code, and this facilitates the cherry-picking process. Cherry-picking is a valuable tool in Git for selectively applying commits from one branch to another. It allows you to bring in individual changes without merging entire branches, providing more granular control over your project’s history. So, next time you need to incorporate specific changes from one branch into another, reach for the git cherry-pick command and wield its selective power with confidence!