概要
Vault7で公開されたCIAの内部ドキュメントに含まれていた git運用の小技 について解説。
ローカルリポジトリに溜まる 古いブランチの整理方法 が紹介されている。
従来のmasterからmainへの移行にも対応した コマンドの改良版 も説明。
エイリアス化することで 毎回コマンドを覚えずに実行可能。
日々の作業効率化と リポジトリの整理整頓 が可能。
Vault7のgit小技:ローカルの不要ブランチ一括削除
- 2017年にWikiLeaksが Vault7 として公開したCIAのハッキングツールと内部ドキュメント
- 内部開発者向けドキュメントに gitの便利な使い方 が記載
- 時間とともにローカルリポジトリに 不要なブランチが蓄積 する問題
git branchコマンドで一覧表示すると 古いブランチが多数残存- 標準コマンド
git branch --mergedで マージ済みブランチのリストアップ が可能 - 1つずつ手動削除は 非効率
CIA流・一括クリーンアップコマンド
- オリジナルコマンド:
git branch --merged | grep -v "\*\|master" | xargs -n 1 git branch -dgit branch --merged: 現在のブランチにマージ済みのローカルブランチを一覧grep -v "\*\|master": 現在のブランチ(*)とmasterを除外xargs -n 1 git branch -d: 残りのブランチを1つずつ安全に削除(未マージは削除されない)
main対応・改良版コマンド
- 多くのプロジェクトが
mainを利用する現状に合わせた アップデート版 - よく使う他のブランチ(例:
develop)も 除外指定が可能 - コマンド例:
git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -dorigin/main基準で マージ済みブランチを抽出grep -vE "^\s*(\*|main|develop)"で mainやdevelopも除外xargsで 残りを一括削除
エイリアス設定と運用
- 毎回コマンドを覚える必要をなくすため エイリアス化を推奨
- 例:
alias ciaclean='git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d' - リポジトリ内で
ciacleanと打つだけで 不要ブランチの整理完了 - デプロイ後や作業区切りごとに 定期実行を推奨
効果とまとめ
- コマンド一発で 40本以上の不要ブランチが一気に数本に整理
- 毎週数分の時短と 作業環境の清潔化
- 小さな工夫で 継続的な生産性向上