mcpField
C
clean-branches

clean-branches

github.com/tartinerlabs開発858 回インストール1 日前に更新
リポジトリ

clean-branches について

clean-branches は、作業が取り込まれたローカル Git ブランチを安全に削除するスキルです。マージの根拠を確認し、使用中のブランチを保護して、未完了や判断できない作業は残します。

主な機能

  1. 01リモート状態の同期と worktree の確認
  2. 02Git の根拠に基づくマージ済みブランチの検出
  3. 03マージ済み GitHub・GitLab リクエストの確認
  4. 04削除前の候補確認
  5. 05削除・保持したブランチの報告

活用シーン

  1. 01マージ済みプルリクエストのブランチ整理
  2. 02根拠を確認して squash マージ済みブランチを削除
  3. 03未完了の作業を誤って消さずにローカルブランチを点検

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tartinerlabs/skills --skill clean-branches

インストール後、Claude Code で/clean-branchesを入力して読み込まれたか確認します。

詳細

作業がすでに取り込まれたローカルブランチを削除し、それ以外には一切触れません。

ワークフロー

  1. リモートの状態を同期します:git fetch --prune。現在のブランチと、ワークツリーでチェックアウトされているブランチ(git worktree list)を確認します。これらは決して削除しません
  2. ネイティブ処理(git 2.56+):git branch --dry-run --delete-merged <remote> でプレビューしてから、--dry-run を付けずに実行します。現存するアップストリームから先端まで到達可能なブランチを削除し、branch.<name>.deleteMerged=false による除外設定を尊重します。古いバージョンの git ではステップ 3 に進みます
  3. 取りこぼし分の処理:--delete-merged は、アップストリームが削除されたブランチと、アップストリームのないブランチを意図的にスキップします。ホスト側でヘッドブランチが削除された後に残る、マージ済み PR のブランチの多くがこれに該当します。git branch -vv から候補リスト(アップストリームが : gone] のブランチと、アップストリームのないブランチ)を作成し、次のいずれかで取り込みが確認できた候補だけを残します:
    • git branch --merged <default-branch> に表示される(ファストフォワードまたはマージコミット)
    • PR/MR がマージ済みであること。GitHub:gh pr list --state merged --head <branch>、GitLab:glab mr list --merged --source-branch <branch>。これにより、コミットがデフォルトブランチから到達可能にならない、スカッシュマージとリベースマージも確認できます
  4. 各ブランチの根拠(例:#93 merged、merged into main)を添えて、まとめたリストを表示し、削除前に確認を求めます。git branch -d で削除します。スカッシュマージされたブランチには -D が必要ですが、これはステップ 3 で PR のマージが確認済みの場合に限り安全です
  5. 削除したものと保持したものを、保持した理由(PR がクローズ済みで未マージ、PR なし、アップストリームが先行、チェックアウト中)とともに報告します

推測せず、保持する

クローズ済みでも未マージの PR があるブランチや、PR がまったくないブランチには、未完了の作業が残っている可能性があります。保持対象として一覧にし、判断はユーザーに委ねます。経過時間や名前だけを理由に削除してはいけません。リモートブランチは対象外です。このスキルが扱うのはローカルの参照だけです。

コメント