web-dev-qa-db-fra.com

git fetch Origin --Prune ne supprime pas les branches locales?

À un moment donné, j'ai pensé que git fetch Origin --Prune Supprimait les branches locales qui n'étaient plus présentes sur le serveur. D'une certaine manière ce n'est pas mon expérience pour le moment.

J'ai exécuté cette commande et la branche locale n'a pas été supprimée. C'est pas actuellement extrait. J'ai couru git branch -vv Pour vérifier cette information, et je vois

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

Donc, il semble savoir qu'il est parti. Pourquoi ne supprimerait-il pas ma succursale locale?

Exécution de git version 2.7.4 (Apple Git-66)

34
yano

Les différentes options de Prune (git remote update --Prune, git remote Prune, git fetch --Prune) niquement supprimer les branches de suivi à distance.1

Vous devrez supprimer manuellement les branches locales dont vous ne voulez plus, ou modifier ou supprimer leurs paramètres en amont si la branche de suivi à distance n'existe plus. Notez que chaque branche locale peut enregistrer une branche distante et/ou une branche qui n’existe pas actuellement, voire jamais. Dans ce cas, Git agit généralement comme si ces branches locales n’avaient aucun ensemble en amont, sauf que depuis la version 1.8.5, plusieurs commandes signalent l’amont comme "disparu" ou sinon invalide, et peuvent suggérer d’utiliser --unset-upstream.


1Plus précisément, ils suppriment les références de destination après avoir effectué le mappage refspec à partir de la ligne de commande ou les lignes fetch de la configuration. Par conséquent, pour chercher des miroirs, ils can suppriment les branches locales. La plupart des clones ne sont toutefois pas configurés en tant que miroirs d'extraction.

Des correctifs de bogues ont récemment été apportés pour les mappages complexes, afin de s’assurer que Git n’élimine pas une branche mappée dans certains cas. Pour tout référentiel normal (clone ordinaire ou miroir d'extraction pure), ces corrections n'ont aucun effet. ils ne comptent que si vous avez compliqué les configurations fetch.

42
torek

La commande que vous voulez est

$ git remote Prune Origin

Cette question est presque Word pour Word ce que vous recherchez.

8
Jonathan Holmes