Github CLI extension
Safely delete local branches that have no remotes and no hanging changes.
The extension uses git branch -d to delete the local branches, hence it will not delete branches with un-pushed changes
unless using --force flag.
The extension supports single or multiple upstream.
gh extension install davidraviv/gh-clean-branchesExecute it inside a git repo folder:
gh clean-branches [--dry-run] [--force] [--verbose]--dry-runSee the list of branches to be deleted before actually deleting them.--forceUsesgit branch -Dforcing a branch to be deleted regardless if upstream branches have local changes. Use carefully!--verbosePrint all log statements.
- Fetches the repo
- Checkout the default branch (e.g
main) and pull changes (needed if we want to delete the current branch) - Lists all remote branches (only with
--verboseflag) - Lists all local branches (only with
--verboseflag) - Lists branches with missing upstream to be deleted
- Deletes branches with no upstream and no un-pushed changes (Skipped on
--dry-run) - Checkout the branch we started with unless it was deleted, then stays on the default branch
The extension depends on:
- zsh
- git v2.22
- gh CLI v2.0