Skip to content

Instantly share code, notes, and snippets.

@ke4roh
Last active December 3, 2019 19:41
Show Gist options
  • Save ke4roh/d050bef1169b8eac2a3ff320df90766b to your computer and use it in GitHub Desktop.
Save ke4roh/d050bef1169b8eac2a3ff320df90766b to your computer and use it in GitHub Desktop.
Prune merged branches from git local and remote
#!/bin/bash
# This will prune merged and deleted branches from your git repository.
# It assumes you're on a "master" branch tracking the origin you like.
#
# To run it, you need git (duh), perl, cut, grep and xargs. Pretty standard stuff.
git=/usr/bin/git
master=$(git branch | grep "^\*" | cut -f2 -d\ )
origin=$(git branch -vv | grep "^\*" | cut -f2 -d\[ | cut -f1 -d\] | cut -d/ -f1)
# Clean up local clones of remotes
$git fetch --all -p
# Delete local merged
$git branch --merged | grep -v "^\*" | xargs -r -n 1 $git branch -D
# Delete merged branches on origin
$git branch -a --merged | grep -v "^\*" | grep "remotes/${origin}/" | cut -f2-3 -d/ | grep -v "${master}" | perl -e 'while (<>) { s#/# :#; print; }' | xargs -r -n 2 $git push
# Copyright 2019 James E. Scarborough & Red Hat, Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be included in all copies
# or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
# OR OTHER DEALINGS IN THE SOFTWARE.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment