Quand je fais git fetch Origin
et que Origin a une branche supprimée, il ne semble pas la mettre à jour dans mon référentiel. Quand je fais git branch -r
, il affiche toujours Origin/DELETED_BRANCH
.
Comment puis-je réparer cela?
Vous devez faire ce qui suit
git fetch -p
Cela mettra à jour la base de données locale des branches distantes.
De http://www.gitguys.com/topics/adding-and-removing-remote-branches/
Une fois que quelqu'un aura supprimé une branche d'un référentiel distant, git ne supprimera pas automatiquement les branches du référentiel local lorsqu'un utilisateur effectuera une extraction ou une extraction git. Toutefois, si l'utilisateur souhaite supprimer toutes les branches de suivi de son référentiel local qui ont été supprimées dans un référentiel distant, il peut taper:
git remote Prune Origin
En remarque, le paramètre -p de git fetch -p
signifie en réalité "Prune".
Quelle que soit la méthode choisie, les branches distantes non existantes seront supprimées de votre référentiel local.
Vous devez faire ce qui suit
git fetch -p
afin de synchroniser votre liste de branche. Le manuel git dit
-p
,--Prune
Après la récupération, supprimez toutes les références de suivi à distance qui n'existent plus sur la télécommande. Les balises ne sont pas sujettes à l'élagage si elles sont récupérées uniquement en raison du suivi automatique des balises par défaut ou d'une option--tags
. Toutefois, si les balises sont extraites en raison d'un refspec explicite (sur la ligne de commande ou dans la configuration distante, par exemple si le composant distant a été cloné avec l'option--mirror
), elles sont également soumises à l'élagage.
Personnellement, j'aime bien utiliser git fetch Origin -p --progress
car il affiche un indicateur de progression.
Cela a fonctionné pour moi.
git remote update --Prune
En ce qui concerne git fetch -p
, son comportement a changé dans Git 1.9, et seul Git 2.9.x/2.10 reflète ce comportement.
Voir commit 9e702 (13 juin 2016) par Jeff King (peff
) .
(Fusion par Junio C Hamano - gitster
- dans commit 1c22105 , 6 juil. 2016)
fetch
: document que l'élagage a lieu avant l'extractionCela a été changé dans 10a6cc8 (
fetch --Prune
: Run Prune avant d'aller chercher, 2014-01-02), mais il semble que personne dans cette discussion n'ait réalisé que nous annoncions explicitement le "après".
Donc, la documentation dit maintenant:
Avant le extraction, supprimez toutes les références de suivi à distance qui n'existent plus sur la télécommande.
C'est parce que:
Lorsque nous avons une branche de suivi à distance nommée "
frotz/nitfol
" à partir d'une extraction précédente et que l'amont a maintenant une branche nommée "frotz
", l'extraction ne parvient pas à supprimer "frotz/nitfol
" avec un "git fetch --Prune
" de l'amont. git informerait l'utilisateur d'utiliser "git remote Prune
" pour résoudre le problème.Changez la façon dont "
fetch --Prune
" fonctionne en déplaçant l'opération d'élagage avant l'opération d'extraction. Ainsi, au lieu d'avertir l'utilisateur d'un conflit, il le corrige automatiquement.