📘
リモートの default branch にマージ済みのローカルブランチを列挙する
リモートの default branch にマージ済みのローカルブランチを列挙する
コマンド
マージ済みのローカルブランチを列挙する (カレントブランチは除く)
git branch --merged $(git symbolic-ref refs/remotes/origin/HEAD) | grep -v "\*"
マージ済みのローカルブランチを列挙して削除する (カレントブランチは除く)
git branch --merged $(git symbolic-ref refs/remotes/origin/HEAD) | grep -v "\*" | xargs -r git branch -d
説明
リモートのデフォルトブランチを取得
refs/remotes/origin/HEAD
でリモートのデフォルトブランチを取得できる。
git symbolic-ref refs/remotes/origin/HEAD
マージされているブランチを取得
以下で <ref> に指定した commit にマージされているローカルブランチを列挙する
git branch --merged <ref>
カレントブランチを除外
git branch --merged
の結果からカレントブランチを取りぞくため "*"
が含まれない行を抜き出す。
"\*"
で *
をエスケープする。
マージ済みブランチを削除
これまでの結果を xargs 経由で git branch -d で削除する。
-r
を渡して 削除対象のブランチが空の時に xargs がエラーにならないようにする。
git branch --merged $(git symbolic-ref refs/remotes/origin/HEAD) | grep -v "\*" | xargs -r git branch -d
Discussion