web-dev-qa-db-ja.com

git fetch Origin --Pruneはローカルブランチを削除しませんか?

ある時点で、_git fetch Origin --Prune_は、サーバー上に存在しなくなったローカルブランチを削除すると考えました。どういうわけか、これは現時点では私の経験ではありません。

このコマンドを実行しましたが、ローカルブランチは削除されませんでした。 not現在チェックアウトされています。この情報を確認するために_git branch -vv_を実行しましたが、

_feature/MyGreatFeature           f30efc7 [Origin/feature/MyGreatFeature: gone]
_

だから、それがなくなったことを知っているようです。ローカルブランチを削除しないのはなぜですか?

git version 2.7.4 (Apple Git-66)を実行しています

34
yano

さまざまなプルーンオプション(git remote update --Prunegit remote Prunegit fetch --Pruneのみリモート追跡ブランチを削除します。1

不要になったローカルブランチを手動で削除するか、リモートトラッキングブランチが存在しない場合はアップストリーム設定を変更または削除する必要があります。各ローカルブランチは、現在存在しない、または存在しなかったリモートおよび/またはブランチを記録できることに注意してください。この場合、Gitはバージョン1.8.5以降、いくつかのコマンドがアップストリームを「なくなった」または無効であると報告し、--unset-upstream


1より正確には、コマンドラインからrefspecマッピングを実行した後、または構成からfetch行を実行した後に、宛先refを削除します。したがって、フェッチミラーの場合、ローカルブランチを削除しますcan。ただし、ほとんどのクローンはフェッチミラーとして設定されていません。

複雑なマッピングのバグ修正がいくつか行われ、Gitがマップされたブランチをプルーニングしないようになっている場合があります。通常のリポジトリ(通常のクローンまたは純粋なフェッチミラー)では、これらの修正は効果がありません。複雑なfetch構成がある場合にのみ重要です。

42
torek

必要なコマンドは

$ git remote Prune Origin

この質問 は、あなたが探しているのはほとんどWord for Wordです。

8
Jonathan Holmes