git-clean-gone 0.1.0

Run `git clean-gone` to delete any GitHub branches that've been deleted on the remote (e.g., after merging PRs)
git-clean-gone-0.1.0 is not a library.

git-clean-gone

Run git clean-gone to delete any GitHub branches that've been deleted on the remote (e.g., after merging PRs)

Description

A Rust CLI tool to clean up local Git branches that have been deleted on the remote.

Features

  • Fetches and prunes remote branches
  • Identifies local branches whose remote counterparts have been deleted
  • Safely deletes those branches (excludes the current branch)
  • Supports dry-run mode to preview what would be deleted
  • Verbose mode for debugging

Installation

cargo install git-clean-gone

# Or, from source:
git clone https://github.com/DeflateAwning/git-clean-gone
cd git-clean-gone
cargo install --path .

Usage

Basic usage (will delete branches):

git-clean-gone
git clean-gone

Dry run (preview without deleting):

git-clean-gone --dry-run
git clean-gone --dry-run

Verbose output:

git-clean-gone --verbose

Combined:

git-clean-gone --dry-run --verbose

How It Works

  1. Runs git fetch -ap to fetch all remotes and prune deleted remote branches
  2. Runs git branch -vv to list local branches with their tracking information
  3. Parses the output to find branches marked as : gone] (remote deleted)
  4. Filters out the current branch (marked with *)
  5. Deletes the gone branches using git branch -D
  6. Displays all remaining branches

Testing

Run the unit tests:

cargo test

Alternatives

Add the following fish function to your ~/.config/fish/my_alias.fish:

function git_clean_gone_branches
    git fetch -ap
    git branch -vv | grep ': gone]' | grep -v "\*" | awk '{ print $1; }' | xargs -r git branch -D
    echo 'Remaining branches:'
    git branch -a
end

Why I prefer my awesome super-extra Rust package:

  • Works on all shells (fish, bash, zsh).
  • Easier install (unless you're already using cool dotfile management)