【Git】fetchやpull時に自動でpruneする方法を解説!

「リモートリポジトリで削除されたブランチ」が「ローカルリポジトリ」に残っていると、ブランチの一覧が見づらくなってしまいます。

この「リモートリポジトリで削除されたブランチ」を「ローカルリポジトリ」からも削除してくれるのが、Gitの--pruneオプションです。

例えば、git pull --prunegit fetch --pruneを実行すると、「リモートリポジトリで削除されたブランチ」が「ローカルリポジトリ」からも自動的に削除されます。

ただし、毎回--pruneオプションを指定するのは少し手間がかかります。そこでこの記事では、Gitの設定を変更して「git fetchgit pull時に自動でpruneする方法」を解説します。

全てのリポジトリでfetchやpull時に自動でpruneする

すべてのプロジェクトで共通してこの設定を有効にしたい場合は、以下のコマンドを実行します。

git config --global fetch.prune true

これにより、今後git fetchgit pullを実行すると、自動的に--pruneが適用されます。これにより、常にローカルの不要なブランチを整理し、クリーンな状態を保つことができます。

設定内容は、ホームディレクトリの~/.gitconfigに以下のように保存されます。

[fetch]
    prune = true

あわせて読みたい

--pruneオプション』については下記の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。

特定のリポジトリだけfetchやpull時に自動でpruneする

すべてのリポジトリではなく、特定のプロジェクトだけで--pruneを自動化したい場合は、そのリポジトリのルートディレクトリ以下のコマンドを実行します。

git config --local fetch.prune true

この場合、設定内容はプロジェクトフォルダ内の.git/configに以下のように保存されます。

[fetch]
	prune = true

設定が反映されたか確認する方法

設定が正しく適用されているかどうかは、以下のコマンドで確認できます。

git config --show-origin --get fetch.prune

このコマンドは、現在有効になっている設定の中からfetch.pruneの値を取得し、その値がどの設定ファイルから読み込まれたのかを表示します。Gitの設定は「system → global → local」の順に読み込まれ、後から読み込まれたものが優先されます。そのため、このコマンドを実行することで、最終的にどの設定が有効になっているのかと、その設定元ファイルを確認できます。

たとえばこう表示されます。

グローバル設定だけしている場合

git config --global fetch.prune true
git config --show-origin --get fetch.prune

出力は以下のようになります。

file:C:/Users/yourname/.gitconfig true

C:/Users/yourname/.gitconfigに設定があり、値がtrueになっていることがわかります。

ローカル設定でも上書きした場合

git config --local fetch.prune false
git config --show-origin --get fetch.prune

出力は以下のようになります。

file:.git/config        false

プロジェクトフォルダ内の.git/configが優先され、falseが採用されているのが確認できます。

本記事のまとめ

この記事では「git fetchgit pull時に自動でpruneする方法」について説明しました。

Gitを使っている方は、ぜひ一度この設定を有効にしてみてください。一度設定しておくだけで、もう毎回--pruneを付け忘れる心配はありません!

お読みいただきありがとうございました。

スポンサーリンク