clean-branches について
clean-branches は、作業が取り込まれたローカル Git ブランチを安全に削除するスキルです。マージの根拠を確認し、使用中のブランチを保護して、未完了や判断できない作業は残します。
主な機能
- 01リモート状態の同期と worktree の確認
- 02Git の根拠に基づくマージ済みブランチの検出
- 03マージ済み GitHub・GitLab リクエストの確認
- 04削除前の候補確認
- 05削除・保持したブランチの報告
活用シーン
- 01マージ済みプルリクエストのブランチ整理
- 02根拠を確認して squash マージ済みブランチを削除
- 03未完了の作業を誤って消さずにローカルブランチを点検
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tartinerlabs/ skills --skill clean-branchesインストール後、Claude Code で/clean-branchesを入力して読み込まれたか確認します。
詳細
作業がすでに取り込まれたローカルブランチを削除し、それ以外には一切触れません。
ワークフロー
- リモートの状態を同期します:
git fetch --prune。現在のブランチと、ワークツリーでチェックアウトされているブランチ(git worktree list)を確認します。これらは決して削除しません - ネイティブ処理(git 2.56+):
git branch --dry-run --delete-merged <remote>でプレビューしてから、--dry-runを付けずに実行します。現存するアップストリームから先端まで到達可能なブランチを削除し、branch.<name>.deleteMerged=falseによる除外設定を尊重します。古いバージョンの git ではステップ 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>。これにより、コミットがデフォルトブランチから到達可能にならない、スカッシュマージとリベースマージも確認できます
- 各ブランチの根拠(例:
#93 merged、merged into main)を添えて、まとめたリストを表示し、削除前に確認を求めます。git branch -dで削除します。スカッシュマージされたブランチには-Dが必要ですが、これはステップ 3 で PR のマージが確認済みの場合に限り安全です - 削除したものと保持したものを、保持した理由(PR がクローズ済みで未マージ、PR なし、アップストリームが先行、チェックアウト中)とともに報告します
推測せず、保持する
クローズ済みでも未マージの PR があるブランチや、PR がまったくないブランチには、未完了の作業が残っている可能性があります。保持対象として一覧にし、判断はユーザーに委ねます。経過時間や名前だけを理由に削除してはいけません。リモートブランチは対象外です。このスキルが扱うのはローカルの参照だけです。
コメント
Markdown 対応