When you maintain long-lived branches like dev and main, keeping them in sync can get messy.
Sometimes you rebase, sometimes you cherry-pick, sometimes you merge release branches — and every time, it's easy to lose track of which commits actually made it into production.
This CLI solves that pain point:
- It compares two branches (e.g.
origin/devvsorigin/main) - Lists commits in
devthat are not yet inmain - Lets you choose which ones to cherry-pick interactively
- Handles merge conflicts with an interactive resolution wizard
- Preserves original commit messages perfectly (even with squashed commits)
- (Optionally) bumps your semantic version, creates a release branch, updates
package.json, and opens a GitHub draft PR for review
No manual git log diffing. No risky merges. No guesswork.
npm install -g cherrypick-interactive(You can also run it directly without installing globally using npx.)
cherrypick-interactiveThat's it. Compares origin/dev vs origin/main for the last week and lets you pick interactively.
For a full release workflow, see the Quick Start guide.
- 🔍 Finds commits in
devnot present inmain - 🗂️ Lets you select which commits to cherry-pick (or pick all)
- 🪜 Cherry-picks in the correct order (oldest → newest)
- ⚔️ Interactive conflict resolution wizard
- 🎯 Preserves exact commit messages from squashed commits
- 🪄 Detects semantic version bump from conventional commits
- 🧩 Creates a
release/x.y.zbranch frommain - 🧾 Generates a Markdown changelog with ticket linking
- 🖥️ Rich TUI dashboard with diff preview, search, and keyboard shortcuts
- 🤖 CI mode for fully non-interactive pipeline execution
- ↩️ Undo / rollback with checkpoint-based session recovery
- 💾 Profiles to save and reuse CLI flag combinations
| Topic | Description |
|---|---|
| 🚀 Quick Start | Getting started, full workflow, custom branches |
| 🧩 Common Use Cases | Filtering, profiles, CI, tracker, undo, and more |
| ⚙️ All Options | Complete reference for all CLI flags |
| ⚔️ Conflict Resolution | Per-file and bulk resolution, CI strategies |
| 🧠 Semantic Versioning | Conventional commits, version sources, ignore patterns |
| 🖥️ TUI Dashboard | Keyboard shortcuts, diff preview, search, fallback |
| 💾 Profiles | Save/load/list profiles, config file, CI usage |
| 🔗 Tracker Integration | ClickUp, Jira, Linear presets, custom patterns |
| 🤖 CI Mode | Exit codes, JSON output, GitHub Actions example |
| ↩️ Undo / Rollback | Checkpoint system, safety checks, limitations |
- Node.js ≥ 20
- Git ≥ 2.0
- GitHub CLI (
gh) — Optional, only required if using--push-release
- Clone the repo
- Install dependencies:
yarn install - Run locally:
node cli.js --dry-run - Run tests:
yarn test - Follow Conventional Commits for your changes.
MIT — free to use, modify, and distribute.
Created to make release management simpler and safer for teams who value clean Git history, predictable deployments, and efficient conflict resolution.