u16suzuの blog

日々学んだことのメモブログです。

ローカルにある不要になった remote-tracking branch を削除する

remote-tracking branch を削除する方法

remote-tracking branch とはローカルにあるリモートレポジトリの追跡ブランチのことです。

私たちが手元で使うローカルブランチは、 git fetch して、このremote-tracking branch をローカルに作成した後に、

ここからさらに git checkout -b して生成されます。

開発が終わり、無事マージした後にこの remote-tracking branch は不要になります。

remote (ex. GitHub上) で削除済みのブランチであれば git remote prune origin で消せるのですが、

そうでないブランチは消せません。しかし、以下の方法で消すことができます。

%w(
  origin/test
  origin/fix
  origin/fix_typo
).each do |bra|
  system("git branch -d -r #{ bra }")
end

削除前は、 git status, git diff などのコマンドが重かったのですが、実行後は幾分か軽くなりました。

参考にさせていただきました

追記

gitコマンド部分も含めて、Rubyスクリプト化しました。

`git branch --all`.split("\n").map(&:strip).select{|s| s.match(/^remotes\//)}.each do |bra|
  system("git branch -d -r #{ bra.gsub(/^remotes\//, "") }")
end