Gitのfetch/pullサブコマンドで--pruneオプションをデフォルトにする

Gitではbranch -aでリモート・リポジトリーも一覧できる。この一覧には既にリモートでは消されたリモート・リポジトリーも表示される。この一覧を更新するにはfetch --pruneを使うわけだが、いちいちそうするのは面倒くさい。どうやらfetch.prunetrueにするとデフォルトで--pruneを付けてfetch(及びpull)を実行してくれるようだ。

$ git config --global fetch.prune true
$ git fetch
From https://github.com/hail2u/example
 x [deleted]         (none)     -> origin/deleted-branch

グローバルに設定して良い場合はこれで常に--prune付きでfetchpullが実行されるようになる。この設定はプロジェクト・ローカルで特定のリモートに対してのみにも設定でき、remote.origin.prunetrueにするとoriginに対してのみ--prune付きで実行されるようになる。こちらはグローバルやローカルのfetch.pruneよりも強い。

この設定の有用性はリモート・リポジトリーの運用方法やブランチの切り方などによって変わってくる。プロジェクトごとに違うこともあるので、グローバルで設定するとまずいこともあるかもしれない。しかし、僕のようにpull --pruneすら知らなくて苦労してた人は、思い切ってグローバルで有効にするのも良いだろう。