Interactive CLI tool for cleaning up unused git branches with a beautiful TUI
npm install git-tidy-cliAn interactive CLI tool for cleaning up unused git branches. Built with Ink for a beautiful terminal UI experience.
- Interactive wizard - Step-by-step guided cleanup process
- Dry-run by default - Safe mode that shows what would be deleted without actually deleting
- Multiple filter criteria - Filter branches by:
- Merged status (already merged into default branch)
- Stale branches (no commits in X days)
- Age-based (branches older than X days)
- Pattern matching (e.g., feature/, hotfix/)
- Smart defaults - Auto-detects default branch via GitHub API
- Batch selection - Select all, none, or invert selection with keyboard shortcuts
- Local & remote - Delete both local and remote branches in one go
- Delete after dry-run - Option to execute deletion right after reviewing dry-run results
``bash`Install globally from npm
npm install -g git-tidy-cli
`bashClone the repository
git clone https://github.com/ArmandBrworworworx/git-tidy.git
cd git-tidy
Usage
Simply run
git-tidy in any git repository:`bash
git-tidy
`$3
| Flag | Description |
|------|-------------|
|
-x, --execute | Actually delete branches (default: dry-run mode) |
| -y, --yes | Skip confirmations (for scripting) |
| -t, --token | GitHub personal access token (or use GITHUB_TOKEN env) |
| -V, --version | Show version |
| -h, --help | Show help |$3
`bash
Interactive mode (dry-run by default)
git-tidyActually delete branches
git-tidy --executeUse with GitHub token for better API access
git-tidy --token ghp_xxxxxxxxxxxx
or
GITHUB_TOKEN=ghp_xxxxxxxxxxxx git-tidy
`Workflow
1. Scope Selection - Choose to clean local, remote, or both
2. Filter Criteria - Select which branches to include (merged, stale, pattern, etc.)
3. Branch Selection - Review and select specific branches to delete
4. Confirmation - Review summary before deletion
5. Execution - Watch progress as branches are deleted
6. Summary - See results with option to delete for real after dry-run
$3
| Key | Action |
|-----|--------|
|
↑ ↓ | Navigate |
| Space | Toggle selection |
| Enter | Confirm / Proceed |
| Esc | Go back |
| a | Select all (in branch selection) |
| n | Select none (in branch selection) |
| i | Invert selection (in branch selection) |
| d | Delete for real (after dry-run) |
| q | Quit |Safety
- Dry-run by default - No branches are deleted unless you pass
--execute or press d after a dry-run
- Protected branches - Automatically protects main, master, develop`, and the repository's default branch- Ink - React for CLI
- @inkjs/ui - UI components (Select, MultiSelect, Spinner)
- simple-git - Git operations
- @octokit/rest - GitHub API
- Commander.js - CLI argument parsing
- TypeScript + tsup
MIT