LoginSignup
4
4

More than 5 years have passed since last update.

git でマージ済みのリモートブランチを確認・一括削除するコマンドを作ってみた

Last updated at Posted at 2016-08-02

git でマージ済みのリモートブランチを確認したりまとめて削除したいことがしばしばあるので、git のサブコマンド風に作ってみた。

以下の内容を /usr/local/bin/git-merged-remote-branch として保存して実行権限を与えておく。

/usr/local/bin/git-merged-remote-branch
#!/bin/bash

usage() {
    echo "usage: git merged-remote-branch <remote>"
    echo "  Show and remove merged remote branched."
    echo
    echo "options"
    echo "  -h, --help    show help"
    echo "  -D, --delete  remove remote branch"
    echo
    exit 1
}

REMOTE=origin

for OPT in $*
do
    case $OPT in
        '-h'|'--help' )
            usage
            exit 1
            ;;
        '-D'|'--delete' )
            FLAG_DELETE=1
            ;;
        *)
            if [[ ! -z "$1" ]] && [[ ! "$1" =~ ^-+ ]]; then
                REMOTE=$1
            else
                usage
                exit 1
            fi
    esac
    shift
done

if [ "$FLAG_DELETE" ]; then
    echo delete merged branches on [$REMOTE]
    git branch -a --merged | grep -v master | grep remotes/$REMOTE/| sed -e "s% *remotes/$REMOTE/%%"| xargs -I% git push $REMOTE :%
else
    echo merged branches on [$REMOTE]
    git branch -a --merged | grep -v master | grep remotes/$REMOTE/| sed -e "s% *remotes/$REMOTE/%  %"
fi

使うときは

$ git merged-remote-branch

でマージ済みのリモートブランチを表示。
デフォルトでは origin をチェックするが、任意のリモートリポジトリを指定したい場合はリモート名を引数で指定する。

$ git merged-remote-branch myorigin

オプションに -D を指定すると、マージ済みのリモートブランチをまとめて消す。(オプションは前でも後ろでもOK)

$ git merged-remote-branch myorigin -D

(参考にさせていただいた情報)

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4