溜まったローカルブランチを安全に削除!gh poiでブランチ管理が楽になる
開発を続けていると必ず遭遇する、ローカルブランチ問題
毎日コードを書いていると、気づけばローカルリポジトリには大量のブランチが溜まっています。
つい最近、気づけば78個のローカルブランチが表示されて「うえー」となりました。
そして、こんな疑問が湧いてきます。
- 「このブランチって、もうマージされてるっけ」
- 「削除して大丈夫なブランチはどれだろう」
- 「作業中のブランチを間違って削除してしまったらどうしよう...」
2桁のブランチがあると、どのブランチが削除可能なのか判断に迷うことが多くなります。
ただ1つ1つ確認するのは非常に面倒です。そんなときはgh poiが便利です。
私の開発環境での日常
私の開発環境では、以下のような流れで作業を進めています。
- 新機能やバグ修正のためにfeatureブランチを作成
- 開発・テスト・コミット
- Pull Requestを作成
- コードレビュー後、mainブランチにマージ(squash merge)
- 次のタスクへ移動
この流れを繰り返していると、ローカルには「マージ済みだが削除していないブランチ」が蓄積されていきます。定期的にクリーンアップしたいのですが、手動で一つずつ確認するのは非常に面倒です。
gh poiとの出会い
そんな時に発見したのが、gh poiというGitHub CLI extensionです。
gh poiは、マージされたローカルブランチだけを安全に削除してくれる素晴らしいツールです。
gh poiの導入方法
インストールは簡単ですが、GitHub CLI(https://cli.github.com/)がインストールされていることが前提となります。
gh extension install seachicken/gh-poi
これだけで準備完了です!
実際の使い方
基本的な使い方
最もシンプルな使い方は、以下のコマンドを実行するだけです。
gh poi
このコマンドを実行すると、マージされたローカルブランチを自動的に検出し、削除してくれます。
より安全に使うためのdry-runオプション
いきなりブランチを削除するのは怖いという場合は、--dry-runオプションが便利です。
gh poi --dry-run
このオプションを使うと、実際にブランチを削除することなく、削除対象となるブランチの一覧を表示してくれます。
私はいつもこれで確認してから実際の削除を行うようにしていましたが、もうgh poiを信頼しきっているので、最近はこのオプションはあまり使っていません。
Pull Requestの状態を指定
デフォルトでは「merged」状態のPull Requestに対応するブランチが削除対象となりますが、状態を指定することも可能です。
gh poi --state closed
この場合、「closed」状態のPull Requestに対応するブランチが削除対象になります。
ただ個人的には、デフォルトでよいと思っています。(あまりclosedを対象にしたいときがないため)
デバッグ情報の表示
何らかの問題が発生した場合は、--debugオプションで詳細な情報を確認できます。
gh poi --debug
ブランチの保護機能
特定のブランチを削除対象から除外したい場合は、protect機能を使用できます。
# ブランチを保護
gh poi protect feature-branch
# 保護を解除
gh poi unprotect feature-branch
まとめ
gh poiは、特に以下のような方におすすめできます。
- ローカルブランチの管理に困っている方
- 安全にブランチを削除したい方
- 開発環境を定期的にクリーンアップしたい方
私のように、気づけばローカルブランチが溜まってしまう開発者の方は、ぜひ一度試してみてください。
Discussion