TUI tool for browsing and bulk-deleting git branches
Project description
TUI tool for interactively browsing and bulk-deleting git branches, with repo maintenance (GC, repack, prune), a stash browser, and multi-repo bookmarks.
Built with Textual + Python 3.11+.
Installation
uv tool install git-cleaner-tui
git-cleaner-tui
Or from source:
git clone https://github.com/Allentgt/Git-Cleaner
cd git-cleaner
uv sync
uv run git-cleaner-tui --repo /path/to/repo
Requires Python ≥ 3.11, uv (or pip), and a git repository.
Features
- 🗓️ Date filtering — Pick From/Until dates (calendar picker) or use presets: 7d, 30d, 90d, 1y
- 🔍 Branch browser — Tree view with prefix grouping (
feature/,bugfix/, …), ahead/behind tracking, stale badge (>180d), details pane on select - 🛡️ Protection —
main/master/develop+ custom patterns from.git-branch-cleaner.toml; cannot be selected - ⛔ Blacklist — Wildcard patterns (
archive/*); hidden by default - ☁️ Remote deletion — Toggle
rto also delete on remote (git push origin --delete) - 🧪 Dry Run — Toggle to preview deletions without executing
- ↩️ Undo — Press
uto restore the last batch via reflog (git branch <name> <hash>) - 📥 CSV/JSON export — Download filtered branch list to CWD
- 🔧 Maintenance dashboard — Repo health stats + GC/Repack/Prune/Reflog tasks
- 📦 Stash browser — List/drop/apply/pop stashes from the Stashes tab
- 🔖 Multi-repo bookmarks —
Ctrl+Bto save and switch between repos - ⚡ Fast — Single
git for-each-refcall; bulk delete with one confirm
Usage
git-cleaner-tui
# or: git-cleaner-tui --repo /path/to/repo
Branches Tab
| Key | Action |
|---|---|
Space |
Toggle selection |
a |
Select / deselect all |
d |
Delete selected (with confirmation) |
r |
Toggle remote deletion |
p |
Toggle protected visibility |
b |
Toggle blacklisted visibility |
u |
Undo last deletion batch |
Ctrl+R |
Refresh |
Ctrl+B |
Open bookmarks |
Date presets (7d/30d/90d/1y) sit next to the Load button. Branches appear grouped by prefix in a collapsible Tree. Select a leaf node to see its last-commit details.
Maintenance Tab
Health stats and one‑click tasks: Git GC, GC Aggressive, Repack, Prune Remote, Expire Reflog, or Run All (sequential). Runs async — UI stays responsive.
Stashes Tab
DataTable of all stashes with Drop / Apply / Pop / Refresh buttons.
Bookmarks
Ctrl+B opens a modal to add the current repo, remove it, or switch to a bookmarked repo. Persisted in ~/.git-branch-cleaner.toml.
Configuration
~/.git-branch-cleaner.toml (global) or .git-branch-cleaner.toml (per‑repo):
[protected]
patterns = ["release/*", "hotfix/*"]
[blacklist]
patterns = ["archive/*", "wip-*"]
[theme]
name = "textual-dark"
Hardcoded defaults (always active): main, master, develop. The checked-out branch is also protected.
Keybindings
| Tab | Key | Action |
|---|---|---|
| Branches | Space |
Toggle selection |
| Branches | a |
Select / deselect all |
| Branches | d |
Delete selected |
| Branches | r |
Toggle remote |
| Branches | p |
Toggle protected |
| Branches | b |
Toggle blacklisted |
| Branches | u |
Undo deletion |
| Branches | Ctrl+R |
Reload |
| All | Ctrl+B |
Bookmarks |
Development
git clone https://github.com/Allentgt/Git-Cleaner
cd git-cleaner
uv sync --dev
uv run pytest # 23 tests
uv run git-cleaner-tui
FAQ
Q: Can I undo a deletion?
Yes — press u immediately after deleting. Undo uses git branch <name> <hash> via the stored commit hash.
Q: Does it work on Windows?
Yes. Tested on Windows, macOS, Linux. Python 3.11+.
Q: How are dates filtered?
By the commit date of the branch tip. Both From and Until are inclusive.
Q: Does the maintenance dashboard modify my repo?
It runs real git commands that modify .git. They don't change working tree files.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file git_cleaner_tui-1.4.0.tar.gz.
File metadata
- Download URL: git_cleaner_tui-1.4.0.tar.gz
- Upload date:
- Size: 5.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c2809cd2ec52bc10c08016eb14264f0776001f43f6ca0ef53fddc1612a08952
|
|
| MD5 |
118ef850805cb216126f03dc73496110
|
|
| BLAKE2b-256 |
e805f814fb9d60d2b34c0980f01f17028d414e297d922dd0fd64c9367ef00093
|
File details
Details for the file git_cleaner_tui-1.4.0-py3-none-any.whl.
File metadata
- Download URL: git_cleaner_tui-1.4.0-py3-none-any.whl
- Upload date:
- Size: 25.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27369eabcd34fc67a8af640933aab1b0f9f12f850b5179639c205816032bf637
|
|
| MD5 |
c80244bcbca4900aee8bf94d20c29898
|
|
| BLAKE2b-256 |
74bd66ad683d1d714fb3d3b2fc8f983b3ce21fdc05a2c964b27e00dd23e6930b
|