Sometimes you don’t want to merge an entire branch — you just need one or two golden commits from another branch. That’s exactly what git cherry-pick is made for. In this complete guide, we’ll explore how cherry-picking works, how to handle the inevitable merge conflicts smoothly, and how IntelliJ IDEA’s magical merge conflict resolver turns a painful process into a breeze.
Whether you're fixing a hotfix in production, backporting a feature, or cleaning up a messy feature branch, mastering cherry-pick will save you hours.
1. What is Git Cherry-Pick and When to Use It?
cherry-pick applies the changes introduced by one or more existing commits onto your current branch — without bringing the entire branch history.
- Hotfix backporting to older release branches
- Picking only specific bug fixes from a feature branch
- Re-applying lost commits after a bad rebase
- Sharing a single improvement across multiple long-lived branches
2. Basic Cherry-Pick Commands
# Pick a single commit
git cherry-pick <commit-hash>
# Pick multiple commits (in order)
git cherry-pick <commit1> <commit2> <commit3>
# Pick a range of commits (uses ... syntax)
git cherry-pick feature-branch~5..feature-branch
# Pick and automatically commit (no edit)
git cherry-pick -n <commit-hash> # --no-commit
# Continue after resolving conflicts
git cherry-pick --continue
# Abort the whole cherry-pick operation
git cherry-pick --abort
3. What Happens During a Cherry-Pick Conflict?
When the commit you’re picking touches the same lines that have changed in your current branch, Git stops and says:
error: could not apply ab12cd3... Fix login bug
hint: after resolving the conflicts, mark the corrected paths with
'git add' and run 'git cherry-pick --continue'
At this point Git has:
- Applied as much of the commit as possible
- Marked conflicting files with standard <<<<< === >>>>> markers
- Staged everything that didn’t conflict
4. Step-by-Step: Resolving Cherry-Pick Conflicts (Command Line)
# 1. See what’s conflicting
git status
# 2. Open the conflicting files and resolve manually
# Look for conflict markers
# 3. After fixing
git add src/main/java/com/example/UserService.java
# 4. Continue the cherry-pick
git cherry-pick --continue
# 5. (Optional) Edit the commit message or just accept the original
5. The Magic Wand: IntelliJ IDEA’s Cherry-Pick Conflict Resolver
IntelliJ IDEA turns this painful manual process into pure joy.
5.1 How to Cherry-Pick in IntelliJ IDEA
Git → Branches → (choose branch) → Log tab
→ Right-click any commit → Cherry-Pick Selected Commits
Or select multiple commits with Ctrl/Cmd and cherry-pick them all at once!
5.2 When Conflict Happens – The Magic Appears
IntelliJ automatically opens the Merge Dialog (same powerful 3-way merge tool used in rebase/merge).
flowchart TD
A[Your Current Branch] --> Left[Left Pane - YOURS]
B[Cherry-Picked Commit] --> Right[Right Pane - CHERRY-PICK]
C[Common Ancestor] --> Middle[Middle Pane - BASE]
Result[Result (center)]:::result
classDef result fill:#6366f1,stroke:#4f46e5,color:white
You get:
- Full 3-way merge view (Left = yours, Right = cherry-pick, Middle = base)
- Side-by-side diff with syntax highlighting
- One-click buttons: <<, >>, X to accept theirs, yours, or remove
- Non-conflicting differences already merged automatically
- Real-time result preview
5.3 Pro Tips for IntelliJ Cherry-Pick
# After resolving all conflicts:
→ Click "Apply" in the Merge Dialog
→ IntelliJ automatically runs "git cherry-pick --continue"
→ You land on the commit message editor (or it auto-commits with -n)
# Want to abort?
→ Just click "Cancel" → IntelliJ runs "git cherry-pick --abort"
No terminal needed!
6. Cherry-Pick Conflict Resolution Workflow (Visual)
flowchart TD
Start[Start Cherry-Pick] --> Conflict{Conflict?}
Conflict -->|No| Done[Done]
Conflict -->|Yes| IntelliJ[IntelliJ Opens Merge Dialog]
IntelliJ --> Resolve[Resolve using << >> X buttons]
Resolve --> Apply[Click Apply]
Apply --> Continue[IntelliJ runs --continue]
Continue --> Done
style Done fill:#10b981,color:white
style Conflict fill:#ef4444,color:white
style IntelliJ fill:#6366f1,color:white
7. Advanced Cherry-Pick Scenarios
| Scenario | Command | IntelliJ Way |
|---|---|---|
| Pick commit but edit changes before committing | git cherry-pick -n <hash> |
Right-click → "Cherry-pick with --no-commit" |
| Pick from another branch without switching | git cherry-pick feature/login-fix |
Just select commit from any branch in Log |
| Pick 10 commits at once | git cherry-pick commit1^..commit10 |
Ctrl+Click multiple → Cherry-Pick |
| Abort a messy multi-commit cherry-pick | git cherry-pick --abort |
Click Cancel in merge dialog |
8. Best Practices & Gotchas
- Avoid cherry-picking already merged commits → leads to duplicates
- Use meaningful commit messages when --continue asks
- Cherry-pick in order if commits depend on each other
- Always test after cherry-picking (especially in release branches)
- Prefer rebase when bringing many commits — cherry-pick is for few selected ones
Conclusion
git cherry-pick is one of the most powerful Git features when used correctly. Combined with IntelliJ IDEA’s visual merge tool, resolving conflicts becomes almost enjoyable.
Key Takeaways:
- Cherry-pick is perfect for selective commit application
- Conflicts are normal — resolve them confidently
- IntelliJ IDEA’s 3-way merge dialog is a superpower
- Never fight conflicts in terminal again — let the IDE do the heavy lifting
Next time you need just one commit from another branch, you know exactly what to do — and you have a magic wand ready when things get messy! ✨

%20(1).png)