Skip to content

betaorbust/github-loppers

Repository files navigation

Delete Squash-merged local Git Branches

NPM Version Hippocratic License HL3-FULL

Shock at "git branches"

A node utility to delete local branches that have already been merged into a mainline via the squash-merge strategy. (Frequently used on Github.)

With normal merge commits, you can run git branch --merged to get a list of already-merged branches, but with squash-merge you end up with new commits that contain your feature branch's work.

This util will find those already-squashed-and-merged branches and optionally delete them.

Explanation of what's going on under the hood
  • Gets the branch list by name
    • git for-each-ref refs/heads/ --format=%(refname:short)
  • Then for each branch found:
    • Find the ancestor commit where ThisBranch left BaseBranch
      • git merge-base <BaseBranch> <ThisBranch>
    • Get the tree ID
      • git rev-parse <ThisBranch>^{tree}
    • Make up a temporary commit with the contents ThisBranch squashed together
      • git commit-tree <TreeID> -p <AncestorSha> -m "Temp <ThisBranch>"
    • See if the temp commit contents was already applied to upstream
      • git cherry <BaseBranch> <TempPatchSha>
    • If the above output starts with - the branch is a candidate for deletion

Usage:

By default, this utility runs in dry mode. You will be prompted if you actually want to run any destructive changes.

The easiest way to use @betaorbust/github-loppers is via NPX:

cd ~/code/myProject             # Get to your local repo
npx @betaorbust/github-loppers   # Run the utility

which will @betaorbust/github-loppers directly so you can either list out or delete your stale branches.

Demo of running "npx https://github.com/betaorbust/github-loppers"

Requirements:

  • Node >= 18.18.0
  • Git
  • That the mainline branch your checking against is checked out locally.

Acknowledgments

Git logic from @not-an-aardvark's awesome implementation.

About

List or delete local squash-merged git branches.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •