を使用すると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