リモートリポジトリで削除されたブランチがローカルリポジトリに残っていると、ブランチの一覧が見づらくなってしまいます。
こうした不要なブランチをローカルリポジトリからも削除するには、Gitの--prune
オプションが便利です。
この記事では、Gitの--prune
オプションについて、以下の内容をわかりやすく解説します。
- Gitの
--prune
オプションとは - リモートリポジトリで削除されたブランチをローカルリポジトリからも削除する方法
Gitの--pruneオプションとは
Gitの--prune
オプションはリモートリポジトリで削除されたブランチをローカルリポジトリからも削除するためのオプションです。
git fetch
や git pull
コマンドに --prune
オプションを付けるか、または git remote prune
コマンドを使って実行できます。
# git fetch や git pull コマンドに --pruneオプションを付ける場合
git fetch --prune
git fetch -p # 省略形
git pull --prune
git pull -p # 省略形
# git remote prune コマンドの場合
git remote prune <リポジトリ名>
git remote prune origin # リポジトリ名がoriginの場合
「prune(プルーン)」は「取り除く」や「枝を剪定する」という意味の英単語です。
リモートで削除されたブランチをローカルからも削除する方法
例として、以下のようなブランチ一覧がローカルリポジトリにあるとします(外部からclone
したリポジトリでは、ブランチ名がremotes/origin/XXX
という形式で表示されます)。
$ git branch -a
* main
remotes/origin/HEAD -> origin/main
remotes/origin/fuga
remotes/origin/hoge
remotes/origin/main
remotes/origin/piyo
他のメンバーがリモート上でhoge
ブランチとfuga
ブランチを削除し、リモートリポジトリ(origin
)にプッシュしたとします。
$ git push origin --delete hoge
$ git push origin --delete fuga
git fetch
やgit pull
を実行しても、削除されたリモートブランチは自動的にはローカルから削除されません。たとえば、git pull
を実行しても、Already up to date.
と表示されるだけで、ローカルには残ったままです。
$ git pull
Already up to date.
ここでgit fetch --prune
を実行すると、リモートリポジトリで削除されたブランチ(hoge
ブランチやfuga
ブランチ)がローカルリポジトリからも削除されます。
$ git fetch --prune
From C:/Users/user01/Desktop/remoteRepo
- [deleted] (none) -> origin/fuga
- [deleted] (none) -> origin/hoge
もう一度git branch -a
でブランチ一覧を確認すると、リモートで削除されたブランチ(hoge
ブランチやfuga
ブランチ)がローカルリポジトリでも消えていることが分かります。
$ git branch -a
* main
remotes/origin/HEAD -> origin/main
remotes/origin/main
remotes/origin/piyo
本記事のまとめ
今回は、Gitの--prune
オプションを使ってリモートリポジトリで削除されたブランチをローカルリポジトリからも削除する方法を紹介しました。以下のコマンドを覚えておくと便利です。
git fetch --prune
git pull --prune
git remote prune <リポジトリ名>