643 votes

La branche distante de Git est supprimée, mais elle apparaît toujours dans 'branch -a'.

Disons que j'ai une branche nommée coolbranch dans mon dépôt.

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

git push origin :coolbranch
git branch -D coolbranch

Super ! Maintenant la branche est vraiment supprimée.

Mais quand je cours

git branch -a

Je comprends toujours :

remotes/origin/coolbranch

Quelque chose à noter, c'est que lorsque je clone un nouveau référentiel, tout est parfait et git branch -a ne montre pas la branche.

J'aimerais savoir s'il existe un moyen de supprimer la branche de la base de données de l'entreprise. branch -a sans cloner une nouvelle instance ?

1 votes

86 votes

Si vous git fetch -p (ou git pull -p ), les branches distantes seront élaguées.

790voto

Mark Longair Points 93104

git remote prune origin comme suggéré dans l'autre réponse, supprimera toutes ces branches périmées. C'est probablement ce que vous voudriez dans la plupart des cas, mais si vous voulez juste supprimer cette branche particulière de suivi à distance, vous devriez le faire :

git branch -d -r origin/coolbranch

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

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

15 votes

git remote prune origin ou toute forme de git fetch --prune Le marquage n'a pas fonctionné dans mon cas. ...Mais git branch -d -r origin/feature/branch-name a fonctionné. Je ne suis pas sûr que ça ait quelque chose à voir avec le fait qu'il soit sous les feature (flux git) mais c'est comme ça que ça s'est passé, au cas où des googleurs trouveraient que ça leur arrive.

11 votes

Y a-t-il une raison pour laquelle cela est nécessaire ? Il semble vraiment mauvais de laisser ces noms de branches inexistants dans la liste et de ne pas les élaguer automatiquement.

332voto

Brian Phillips Points 7023

Essayez :

git remote prune origin

De la Documentation distante Git :

pruneau

Supprime toutes les données périmées branches de suivi à distance sous <nom>. Ces branches périmées ont déjà été supprimées du référentiel distant référencé par <nom>, mais sont toujours disponibles localement dans "remotes/<name>".

Avec l'option --dry-run, le rapport les branches qui seront élaguées, mais ne les mais ne les élague pas réellement.

1 votes

Pour être complet : il doit être similaire à git pull --prune mentionné à stackoverflow.com/a/17983126/94687 Et : git remote update --prune

251voto

orip Points 28225

N'oubliez pas l'impressionnant

git fetch -p

qui récupère et élague toutes les origines.

0 votes

Pour être complet : il doit être identique à git remote prune origin et similaire à git pull --prune mentionné à stackoverflow.com/a/6127884/94687 y stackoverflow.com/a/17983126/94687 respectivement. Et : git remote update --prune

3 votes

Mais les branches seront toujours visibles si vous exécutez git branch -a

1 votes

@NikhilSahu : Je ne vois plus les branches distantes qui ont été supprimées avec git branch -a

28voto

Shadowvail Points 368

Dans notre cas particulier, nous utilisons Stash comme dépôt Git distant. Nous avons essayé toutes les réponses précédentes et rien ne fonctionnait. Nous avons fini par devoir faire ce qui suit :

git branch –D branch-name (delete from local)
git push origin :branch-name (delete from remote)

Ensuite, lorsque les utilisateurs voulaient retirer des modifications, ils devaient procéder comme suit :

git fetch -p

25voto

likaiguo.happy Points 605

Utilizar:

git remote prune <remote>

Donde <remote> est un nom de source distante comme origine o en amont .

Ejemplo: git remote prune origin

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X