下記のようにエイリアス登録し、時々実行すると便利です!
git-prune-branches () {
git fetch --prune origin && git branch --merged origin/master | grep -vE ' master$|^\*' | xargs git branch -d
}
削除されるのは、ローカルのほかのbranch(例:master)にmerge済みかつサーバのorigin/masterでmergeされているもの限定なので安全です・・!1つでも差分が積まれていたり、サーバ側にはpushされていないと、削除対象になりません!
なお、必ずmasterやdevelopなどのブランチを予めgit pullしておく必要があります(しないと削除されない)。-d
を-D
に書き換えるとgit fetchのみで対応できるようになりますが、強制削除のオプションなので心配な方はそのまま使いましょう。
ちなみにdry-runも用意しておきました。
git-prune-branches-dry-run() {
git fetch --dry-run --prune origin
git fetch origin && git branch --merged origin/master | grep -vE ' master$|^\*' | xargs echo git branch -d
}
参考にしたサイト:http://devblog.springest.com/a-script-to-remove-old-git-branches/