/ git-remove-merged-branches
git-remove-merged-branches
 1  #!/bin/bash
 2  
 3  REMOTE="${1:-origin}"
 4  BRANCH="${2:-master}"
 5  if [[ "$3" = "-n" ]]; then
 6    DRY_RUN=1
 7  else
 8    DRY_RUN=0
 9  fi
10  
11  MERGED_BRANCHES=$(git branch -r --merged |
12    grep "\b${REMOTE}/" |
13    grep -vE "HEAD|master|${BRANCH}" |
14    xargs -L1 |
15    sed -e "s/${REMOTE}\///")
16  if [[ -n "$MERGED_BRANCHES" ]]; then
17    echo "Removing merged branches:"
18    echo "$MERGED_BRANCHES"
19    if [[ $DRY_RUN -eq 0 ]]; then
20      echo "$MERGED_BRANCHES" | xargs git push "$REMOTE" --delete
21    fi
22  else
23    echo "No branches to remove"
24  fi