📘

リモートの default branch にマージ済みのローカルブランチを列挙する

2024/02/18に公開

リモートの 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