目次
やりたいこと
masterブランチにマージ済みだが削除されていないリモートブランチが多数残っている。
これらの不要なリモートブランチを手軽に削除したい。
コマンド
リモートのmasterブランチにマージ済みのブランチから、masterとdevelopを除外した一覧を作り、ブランチ名を整形し、削除のプッシュをする。
$ git branch -r --merged master | grep -vE "master|develop" | cut -d "/" -f2- | xargs -t -I{} git push --delete origin {}
実行例
git push --delete origin story/bar To https://github.com/hoge/fuga - [deleted] story/bar git push --delete origin hotfix/foo To https://github.com/hoge/fuga - [deleted] hotfix/foo
git branch -r
リモートブランチを表示する。
–merged master
masterブランチとマージ済みのブランチを表示の対象とする。
grep -vE “master|develop”
masterまたはdevelopの名前が付いたブランチを除外する。
-v
指定の文字列を含まない行を表示する。
-E
拡張正規表現を使えるようにするオプション。
今回はor検索を行うために使用している。
cut -d “/” -f2-
/区切りの2番目のフィールド以降を抽出するために使用。
ここまでのコマンドで生成されたブランチ一覧の各行には、頭にorigin/が付いている。
origin/story/bar
このままではブランチの削除コマンドに使えないので、 cutコマンドで加工する。
-d
区切り文字の変更を行うオプション。
-f
区切り文字で分けたフィールドのうち、どれを抽出するか決めるオプション。
フィールドは1番からカウントするので、 2- と書くことで、フィールドの2番目以降を抽出できる。
xargs -t -I{} git push –delete origin {}
ブランチを1つずつ削除していく。
xargs
パイプで渡した行単位で指定のコマンドを実行する。
-t
実行するコマンドを画面に出力する。
-l{}
パイプで渡されてきた引数の位置を指定する場合に使用する。
今回は後続のコマンドの {} 部分にブランチ名を置く。
git push –delete origin {}
リモートレポジトリに対して、対象ブランチを削除するプッシュを行う。
“【Git】masterにマージ済みの不要なリモートブランチを手軽に一括削除する” への1件の返信