web-dev-qa-db-fra.com

La branche distante git est supprimée mais apparaît toujours dans 'branche -a'

Disons que j'avais une branche nommée coolbranch dans mon référentiel.

Maintenant, j'ai décidé de le supprimer (à la fois à distance et localement) avec:

git Push Origin :coolbranch
git branch -D coolbranch

Génial! Maintenant, la branche est vraiment supprimée.

Mais quand je cours

git branch -a

Je reçois encore:

remotes/Origin/coolbranch

Il convient de noter que lorsque je clone un nouveau référentiel, tout va bien et git branch -a ne montre pas la branche.

Je veux savoir - existe-t-il un moyen de supprimer la branche de la liste branch -a sans cloner une nouvelle instance?

494
yonix

git remote Prune Origin, comme suggéré dans l'autre réponse, supprimera toutes ces branches éventées. C'est probablement ce que vous souhaiteriez dans la plupart des cas, mais si vous souhaitez simplement supprimer cette branche de suivi à distance particulière, vous devez procéder comme suit:

git branch -d -r Origin/coolbranch

(Le -r est facile à oublier ...)

Dans ce cas, -r "listera ou supprimera (si utilisé avec -d) les branches de suivi à distance". selon la documentation git trouvée ici: https://git-scm.com/docs/git-branch

619
Mark Longair

Avez-vous essayé: git remote Prune Origin

Depuis le git remote docs :

Taillez

Supprime toutes les branches de suivi à distance obsolètes sous <nom>. Ces branches obsolètes ont déjà été supprimées du référentiel distant référencé par <nom>, mais sont toujours disponibles localement dans "télécommandes/<nom>".

Avec l'option --dry-run, indique quelles branches seront élaguées, mais ne les élaguez pas réellement.

267
Brian Phillips

N'oubliez pas le génial

git fetch -p

qui va chercher et prunir toutes les origines.

208
orip

Dans notre cas particulier, nous utilisons Stash comme référentiel git distant. Nous avons essayé tout ce qui précède et rien ne fonctionnait. Nous avons fini par avoir à faire ce qui suit:

git branch –D branch-name (delete from local)
git Push Origin :branch-name (delete from remote)

Ensuite, lorsque les utilisateurs allaient extraire les modifications, ils devaient procéder comme suit:

git fetch -p
18
Shadowvail
git remote Prune <remote>

<remote> est un nom de source distant tel que Origin ou en amont.

exemple: git remote Prune Origin

16
likaiguo.happy