Project

git-trim

0.0
Low commit activity in last 3 years
A long-lived project that still receives updates
A script to remove all merged branches that aren't specified in the .git-protected-branches file.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 3.0
>= 1.16
~> 13.0
 Project Readme

git trim

Deletes local branches — and the linked worktrees that hold them — once they are fully merged into main. Run it after a round of PRs merge and it cleans up everything that's done, while refusing to touch anything that still has work in it.

Installation

Add this line to your application's Gemfile:

gem 'git-trim'

And then execute:

$ bundle

Or install it yourself as:

$ gem install git-trim

Usage

Run git trim from anywhere inside a repository. It fetches (with prune), then removes every local branch that is fully merged into main, unless the branch is:

  • main itself,
  • the branch you currently have checked out, or
  • listed in a .git-protected-branches file.

If no local main exists (common in bare-repo + worktrees layouts), it compares against origin/main instead.

Worktrees

If a merged branch is checked out in a linked worktree, git trim removes the worktree first and then deletes the branch. Worktrees with uncommitted changes or untracked files are left alone, along with their branch:

$ git trim
Removed worktree /Users/you/src/project/feature-a
Deleted branch feature-a (was fa68cf94).
Skipping branch 'feature-b': worktree at /Users/you/src/project/feature-b has local changes

Commit or stash the local changes and run git trim again to clean up the rest.

Protected branches

The .git-protected-branches file can reside in the current directory or any parent directory. Branch names are each listed on a line in the file. For example:

main
staging
production

Releasing

Releases are cut from the GitHub Actions Release workflow (Actions → Release → Run workflow → enter a version like 0.2.0). The workflow runs the specs, bumps lib/git-trim/version.rb, tags v<version>, publishes to RubyGems via trusted publishing (no API key), and creates a GitHub release.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/cpetersen/git-trim. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Git::Trim project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.