remoteリポジトリで削除されているブランチが手元に残っている場合に、ローカルのブランチをまとめて消す方法
remoteリポジトリで削除されてしまっているブランチを消したい場合がある。以下の様な状態のときだ。
-> % git remote show origin * remote origin Fetch URL: git@github.com:suzuken/hoge.git Push URL: git@github.com:suzuken/hoge.git HEAD branch: master Remote branches: master tracked refs/remotes/origin/fuga stale (use 'git remote prune' to remove)
これはtrack済みのブランチがremoteで消えてしまっているケースだ。例えばGitHubでpull-requestをマージした後にブランチを消した場合などにはこうなる。今のチームの運用ではマージ済みトピックブランチは消すようにしている。なのでこういった状態は平常である。
このremoteブランチに関するtrack情報を消すためにはgit prune
を利用する。--dry-run
オプションでprune対象のブランチを確認することができる。
-> % git remote prune origin --dry-run Pruning origin URL: git@github.com:suzuken/hoge.git * [would prune] origin/fuga
実際にpruneする。
-> % git remote prune origin Pruning origin URL: git@github.com:suzuken/hoge.git * [pruned] origin/fuga
ちなみに、pruneとは
1 〈枝・根などを〉切り取る, おろす*1;〈木を〉刈り込む, 剪定せんていする*2.
との意味。余計なものを取り除く。