を使用するとgit push origin :staleStuff
、が自動的に削除されるorigin/staleStuff
ため、実行すると、git remote prune origin
他のユーザーによって削除されたブランチが枝刈りされています。git prune
削除したブランチを取り除くために、同僚が実行する必要がある可能性が高くなります。
では、正確にgit remote prune
は何をするのでしょうか?主なアイデア:ローカルブランチ(トラッキングブランチではない)はgit remote prune
コマンドで操作されないため、手動で削除する必要があります。
理解を深めるための実際の例:
との2つのブランチを持つリモートリポジトリがmaster
ありfeature
ます。両方のブランチで作業しているとしましょう。その結果、ローカルリポジトリにこれらの参照があります(混乱を避けるために完全な参照名が付けられています)。
refs/heads/master
(略称master
)
refs/heads/feature
(略称feature
)
refs/remotes/origin/master
(略称origin/master
)
refs/remotes/origin/feature
(略称origin/feature
)
さて、典型的なシナリオ:
- 他の開発者がですべての作業を完了し
feature
、それをマージしてmaster
、feature
リモートリポジトリからブランチを削除します。
- デフォルトでは、
git fetch
(またはgit pull
)を実行しても、参照はローカルリポジトリから削除されないため、これら4つの参照はすべて保持されます。
- それらをクリーンアップして、を実行することにしました
git remote prune origin
。
- gitは
feature
ブランチが存在しないことを検出したためrefs/remotes/origin/feature
、古いブランチも削除する必要があります。
- これで、は参照を削除しない
refs/heads/feature
ため、を含む3つの参照git remote prune
がありrefs/heads/*
ます。
リモートトラッキングブランチに関連付けられているローカルブランチは、branch.<branch_name>.merge
構成パラメーターによって識別できます。このパラメータはgit pull
、(おそらくを除いて)機能するために実際には必要ないため、存在しない可能性があります。
(例とコメントからの役立つ情報で更新)
git remote show origin
、次のようにして、マークされたブランチを探しますstale