Skip to main content

Cherry Files Toolkit banner

A terminal UI (built with Textual) for moving work between git branches at the file level — pick the final state of the files you want and apply them to another branch as one clean commit, no commit-by-commit cherry-picking.

It ships two tools as tabs in one TUI:

  • Cherry Files Diff — see every file added, modified, or deleted on a branch since it diverged from its base, grouped as a scannable tree.
  • Cherry Files Picker — select files from your current branch and commit their current content onto a target branch.

The idea

I often encountered a scenario where a file or several files were modified across multiple commits. And by the time they where ready to push to production, I had to manually select all the commits related to those files, to cherry pick them and merge them into production.

Then, I realized what I really wanted was the final result, the approved code version of the files, not the detailed history of commits.

This project is a new iteration of my previous Cherry Files Picker. The goal is the same — move the final state of selected files between branches as one clean commit — but this version upgrades the UI to a full TUI and adds a second module, Cherry Files Diff, for understanding branch divergence at a glance.

Install

Recommended for regular use — pipx installs the tool in its own isolated environment and makes the command available everywhere:

pipx install cherry-files-toolkit

If you are installing from a local checkout while developing, use an editable install instead:

python -m venv .venv
source .venv/bin/activate
pip install -e .

Requires Python 3.10+ and git on your PATH.

Usage

Run it from inside any git repository:

cherry-files-toolkit

The app opens with Cherry Files Diff selected. Use the footer shortcuts to move between tabs:

  • Ctrl+1 — Cherry Files Diff
  • Ctrl+2 — Cherry Files Picker
  • Ctrl+Q — quit

Cherry Files Diff tab

Explains branch divergence at the file level, so you can recover context on a branch you don't know well:

  1. Pick the divergent branch (the one with the work) and its base branch.
  2. Start Diff Checker finds the point where they diverged and lists every file created, modified, or deleted since — with per-category counts and a directory tree for fast scanning.

Cherry Files Picker tab

Transfers the final approved state of selected files from your working branch to another branch:

  1. Source branch is pre-filled with your current branch.
  2. Pick a target branch — where the work should land.
  3. Search and select the files to move. Selections persist while you filter.
  4. Write a commit title and description, review the selected files, and hit Cherry Pick Files. The toolkit commits those files' current content onto the target branch in a single commit.

Use it when you know which files are done and want them on another branch without replaying the messy commit history that produced them.

License

MIT

Release files for cherry-files-toolkit 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cherry-files-toolkit 1.0.3
File Size Uploaded
cherry_files_toolkit-1.0.3.tar.gz 9.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cherry-files-toolkit 1.0.3
File Interpreter ABI Platform
cherry_files_toolkit-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 22.9 kB

Release files / cherry_files_toolkit-1.0.3.tar.gz

Download URL cherry_files_toolkit-1.0.3.tar.gz
Size 9.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4dd450e7f5bde2a5bd962e2728b71cfbac4fb9f0fa118db1ab2024dc8653be44
BLAKE2b-256 checksum
How to use checksums
04288da30b74a52fdd5382c6b56d272d2d23df7e36d25f136cc8726e4c78e621
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / cherry_files_toolkit-1.0.3-py3-none-any.whl

Download URL cherry_files_toolkit-1.0.3-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c0064010d86bf2d1dc2d10d8b929ae4684ec598398c06d3811693963a20721d3
BLAKE2b-256 checksum
How to use checksums
eb492ab4a987d7fa95537021fce083c0c0e7e710700f38becf186c79231899c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page