Gitのローカルブランチの削除を簡単にした話


My Redmine

杠です。

今回は、マージ済みのローカルブランチの削除を簡単にした話です。ローカルブランチって溜まりがちになりませんか?マージ後にすぐにブランチを削除できれば良いですが、私はつい放置してしまいます。多いものだと不要なブランチが30個ほど放置されていました。ブランチを整理しても、いつの間にブランチが山積みです。

放置されたブランチの一覧

1. マージ済みのブランチを取得→削除するコマンドを作成

簡単にブランチを削除する方法を調べていると、git branch --mergedでマージ済みのブランチを取得できることを知りました。

いくつかのコマンドを組み合わせてマージ済みのブランチを取得→削除するコマンドを作成しました。

$ git pull origin main && git branch --merged | grep -v 'main' | xargs git branch -d

上記のコマンドでは次の1〜3を行なっています。

  1. git pullでローカルリポジトリを最新の状態にする
  2. main以外でマージ済みのブランチを調べる
  3. xargsで2を引数として渡し、ブランチを削除する
    マージ済みのブランチはgit branch -dで削除します(mainブランチに移動していることが前提)。

本当にマージ済みのブランチが削除される対象になっているか不安だったので、1度git branch --mergedで表示された全てのブランチがマージされているか確認後に削除を行いました。

以下はコマンドを実行した後の、git branchの結果です。不要なブランチがなくなり、すっきりです。

不要なブランチを削除後のブランチ一覧

参考:3.3 Git のブランチ機能 - ブランチの管理

まだマージされていないブランチは、git branch --no-mergedで確認できます。

2. 1をエイリアスに設定してみる

都度長いコマンドを打ち込むのは大変なので、git br-dでコマンドを呼び出せるようエイリアスを追加しました。エイリアスを設定すると、コマンドを短縮して呼び出せます。

参考:2.7 Git の基本 - Git エイリアス

git config --global --editで ~/.gitconfig内にgit br-dでコマンドを呼び出せるようにエイリアスを設定しました。今後も簡単にブランチの整理ができそうです。

以下は ~/.gitconfig 内のエイリアスの記述部分を抜粋したものです。

[alias]
        st = status
        co = commit
        br = branch
        cm = commit
        ch = checkout
        di = diff
        br-d = !git pull origin main && git branch --merged | grep -v 'main' | xargs git branch -d

コマンドの先頭に!を付けることで、git br-dで ! 以降に記述したコマンドを起動できます。

エイリアスに設定したコマンドの実行結果

最後に

コマンドを作成して不要なブランチを簡単に削除できるようになりました。ただ、意識的にgit br-dを実行しないとまた不要なブランチが溜まってしまいそうなので、今後は何かをトリガーにコマンドを実行して不要なローカルブランチを溜めないようにするような仕組みが作りたいです。

【スタッフ募集中】
弊社ではAWSを活用したソリューションの企画・設計・構築・運用や、Ruby on Rails・JavaScriptフレームワークなどを使用したアプリケーション開発を行うスタッフを募集しています。採用情報の詳細
弊社での勤務に関心をお持ちの方は、知り合いの弊社社員・関係者を通じてご連絡ください。

My Redmine

こちらの記事もオススメです!
スニペットを登録してGitでのミスを防いだ話
Redmineのユーザーや権限など自分たちが必要な情報を扱いやすい形式にまとめたい場合、REST APIを利用するのがお勧めです。
RedmineのREST APIを活用してプロジェクトメンバーやロール、公開設定などのレポートを作成しています
Redmineのユーザーや権限など自分たちが必要な情報を扱いやすい形式にまとめたい場合、REST APIを利用するのがお勧めです。
ポケットチェンジを使って外貨コインも簡単に両替
外貨を簡単に両替できる「ポケットチェンジ」。SuicaやAmazonギフト券などに簡単にチャージできます。
AWS Glue のクローラーを使用して Application Load Balancer(ALB)のログからデータカタログを作成し、Amazon Athena で検索してみた
Application Load Balancer のログが見にくいので、Glue と Athena を利用してクエリーでログを検索できるようにしました。
オープンソースカンファレンス 2022 でセミナー発表しました
OSC 2022オンラインFallで「はじめてのプロジェクト管理ツール〜Redmine超入門〜」を発表。
ファーエンドテクノロジーからのお知らせ(2024/02/28更新)
2024年3月16日 オライリー本の全冊公開日のお知らせ(もくもく勉強会も同時開催)
ファーエンドテクノロジーが所蔵するオライリー本(全冊)公開日のご案内です。公開日には「もくもく勉強会」も同時開催します。
My Redmine スタンダードプランおよびAdminサポートデスクプランの料金改定のお知らせ【2024年4月ご利用分より】
2024年4月ご利用分より、My Redmine スタンダードプラン(民間企業・個人向け及び官公庁向け)とAdminサポートデスクプランの料金を改定いたします。
My Subversion 一部のプラン・料金改定のお知らせ【2024年4月ご利用分より】
2024年4月ご利用分より、My Redmine スタンダードプラン(民間企業・個人向け及び官公庁向け)とAdminサポートデスクプランの料金を改定いたします。
My Subversion ストレージ容量増量のお知らせ(一部プランを除く)
My Subversionではミディアムプラン以上の各プランのストレージ容量を増量します。
Redmineの最新情報をメールでお知らせする「Redmine News」配信中
新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け