Manページから:
Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>".
だから私は使用してブランチの束を削除しました
git Push Origin :staleStuff
そして走った
git remote Prune Origin
ただし、プルーニングされたローカルブランチは1つだけです。これらのブランチの一部は私によって作成され、一部は同僚によって作成されました。これは、そもそもこれらのブランチを正しく追跡していなかったことを示していますか?
git Push Origin :staleStuff
を使用すると、Origin/staleStuff
が自動的に削除されるため、git remote Prune Origin
を実行すると、他の誰かによって削除されたブランチが削除されます。削除したブランチを削除するために、同僚がgit Prune
を実行する必要がある可能性が高くなります。
では、正確にgit remote Prune
は何をしますか?主なアイデア:ローカルブランチ(トラッキングブランチではない)はgit remote Prune
コマンドの影響を受けないため、手動で削除する必要があります。
さて、理解を深めるための実際の例:
master
とfeature
の2つのブランチを持つリモートリポジトリがあります。両方のブランチで作業していると仮定します。その結果、ローカルリポジトリにこれらの参照があります(混乱を避けるために完全な参照名が付けられています)。
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
を実行することにしました。feature
ブランチがもう存在しないことを検出します。したがって、refs/remotes/Origin/feature
はstaleブランチであり、削除する必要があります。refs/heads/feature
はgit remote Prune
の参照を削除しないため、refs/heads/*
を含む3つの参照があります。branch.<branch_name>.merge
構成パラメーターにより、リモートトラッキングブランチに関連付けられたローカルブランチを識別することができます。このパラメーターは、(おそらくgit pull
を除く)動作するために実際には必要ないため、欠落している可能性があります。
(例とコメントからの有用な情報で更新)