git fetch origine -- prune ne supprime pas les branches locales?

à un moment, j'ai pensé que git fetch origin --prune supprimait les branches locales qui n'étaient plus présentes sur le serveur. Ce n'est pas mon expérience en ce moment.

j'ai exécuté cette commande, et la branche locale n'a pas été supprimé. Il s'agit de et non de actuellement coché. 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 branche locale?

Running git version 2.7.4 (Apple Git-66)

24
demandé sur yano 2016-06-06 21:17:15

2 réponses

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

vous devrez supprimer manuellement les branches locales que vous ne voulez plus, ou modifier ou supprimer leur position en amont si la branche de suivi à distance n'existe plus. Notez que chaque branche locale peut enregistrer une télécommande et/ou une branche qui n'existe pas ou qui n'a jamais existé. Dans ce cas, Git agit principalement comme si ces branches locales n'avaient pas d'ensemble amont, sauf que depuis la version 1.8.5, plusieurs commandes signalent l'amont comme "parti" ou autrement invalide, et peuvent suggérer l'utilisation de --unset-upstream .


1 plus précisément, ils suppriment les références de destination après avoir effectué la cartographie refspec de la ligne de commande ou les lignes fetch de la configuration. Par conséquent, pour les miroirs fetch, ils peut supprimer locale branche. La plupart des clones ne sont pas configurés comme des miroirs de fetch, cependant.

il y a eu quelques corrections de bogues récentes pour des mappages Complexes, pour s'assurer que Git n'a pas taillé une branche cartographiée dans certains cas où elle ne devrait pas. Pour tout dépôt normal-clone ordinaire ou miroir fetch pur-ces corrections n'ont aucun effet; elles n'ont d'importance que si vous avez des configurations fetch compliquées.

20
répondu torek 2016-06-06 19:19:36

la commande que vous voulez est

$ git remote prune origin

Cette question est presque mot pour mot ce que vous cherchez.

5
répondu Jonathan Holmes 2017-05-23 12:26:33