El Réponses courtes
Si vous souhaitez obtenir des explications plus détaillées sur les commandes suivantes, consultez les réponses longues de la section suivante.
Suppression d'une branche distante
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 1.7.0 or newer)
git push origin :<branch> # Git versions older than 1.7.0
Suppression d'une branche locale
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
Suppression d'une branche locale de suivi à distance
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p # Shorter
El réponse longue : il y a trois branches différentes à supprimer !
Lorsque vous avez affaire à la suppression de branches à la fois localement et à distance, gardez à l'esprit que il y a trois branches différentes impliquées :
- La branche locale
X
.
- La branche d'origine distante
X
.
- La branche locale de suivi à distance
origin/X
qui suit la branche distante X
.
L'affiche originale a été utilisée :
git branch -rd origin/bugfix
Qui a seulement supprimé son branche locale de suivi à distance origin/bugfix
et non la branche distante réelle bugfix
en origin
.
Pour supprimer cette branche distante actuelle vous avez besoin
git push origin --delete bugfix
Détails supplémentaires
Les sections suivantes décrivent des détails supplémentaires à prendre en compte lors de la suppression de vos branches distantes et de suivi à distance.
Pousser pour supprimer les branches distantes supprime aussi les branches de suivi à distance
Notez que la suppression de la branche distante X
à partir de la ligne de commande en utilisant un git push
supprimera également la branche locale de suivi à distance origin/X
Il n'est donc pas nécessaire d'élaguer la branche obsolète de suivi à distance avec la commande git fetch --prune
o git fetch -p
. Cependant, cela ne ferait pas de mal si vous le faisiez quand même.
Vous pouvez vérifier que la branche de suivi à distance origin/X
a également été supprimé en exécutant la commande suivante :
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
Élagage de la branche obsolète de suivi à distance local origin/X
Si vous n'avez pas supprimé votre branche distante X
à partir de la ligne de commande (comme ci-dessus), votre dépôt local contiendra toujours une branche de suivi à distance (maintenant obsolète). origin/X
. Cela peut se produire si vous supprimez une branche distante directement via l'interface web de GitHub, par exemple.
Une façon typique de supprimer ces branches de suivi à distance obsolètes (depuis la version 1.6.6 de Git) est de lancer simplement l'opération suivante git fetch
avec le --prune
ou plus court -p
. Notez que cela supprime toutes les branches locales obsolètes de suivi à distance pour toutes les branches distantes qui n'existent plus sur le site distant. :
git fetch origin --prune
git fetch origin -p # Shorter
Voici la citation pertinente du Notes de publication de la version 1.6.6 (c'est moi qui souligne) :
"git fetch" appris --all
y --multiple
pour lancer la recherche à partir de plusieurs dépôts, et --prune
option pour supprimer le suivi à distance qui sont devenues périmées. Ceux-ci rendent "git remote update" et "git remote prune" moins nécessaires (il n'est pas prévu de supprimer "remote update " et " remote prune ").
Alternative à l'élagage automatique ci-dessus pour les branches de suivi à distance obsolètes
Alternativement, au lieu d'élaguer vos branches locales obsolètes de suivi à distance par l'intermédiaire de git fetch -p
, vous pouvez éviter de faire l'opération réseau supplémentaire en supprimant manuellement la ou les branches avec la commande --remotes
o -r
drapeaux :
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Voir aussi
1259 votes
Note du modérateur : Si vous avez l'intention de répondre à cette question, notez qu'il y a déjà 40 réponses postées. Votre nouvelle réponse apportera-t-elle une valeur ajoutée substantielle ?
63 votes
Note : pour Git 2.5+ (Q2 2015), le message exact sera "
deleted remote-tracking branch
" : voir github.com/git/git/commit/0 votes
Vous serez peut-être intéressé par ce script qui simplifie la différence entre la suppression d'une branche locale ET d'une branche distante : tlbx.app/blog/delete-any-git-branch-the-easy-way
0 votes
@RobertHarvey seulement 39 maintenant
0 votes
@Adam : 81. 42 réponses ont été supprimées pour diverses raisons. L'obsession inexpliquée du public pour un sujet particulier est l'un des plus grands mystères de la vie.
12 votes
Sautez les premières réponses et allez jusqu'à la meilleure : stackoverflow.com/a/23961231/4561887 . Pour supprimer une branche git, il y a en fait 3 branches différentes à supprimer ! Cette réponse rend ce fait clair.
2 votes
@GabrielStaples Sans contexte, votre commentaire est confus. Les "meilleures" réponses sont-elles mauvaises ?
4 votes
@Nathan, non, ils ne sont pas faux, mais ils n'enseignent pas ce que vous ne sais pas que tu ne sais pas alors que celui que j'ai cité en lien fait cette critique inconnu inconnu devenir un connu inconnu et ensuite un connu connu . Je ne savais pas que tu avais un 1) branche locale, 2) branche de suivi à distance stockée localement, et 3) branche à distance. jusqu'à ce que je lise cette réponse. Avant cela, je pensais qu'il n'y avait qu'un filiale locale y filiale éloignée . La branche de suivi à distance stockée localement était une inconnu inconnu . Le faire passer de ça à un connu connu est ce qui rend cette réponse la meilleure.
0 votes
Je voulais ajouter une note indiquant que l'on ne peut pas supprimer une branche sur laquelle on travaille actuellement. J'ai fait cette erreur de débutant et j'ai pensé que cela pourrait être utile :)
0 votes
Note de l'utilisateur ordinaire : Si vous avez l'intention d'upvoter le commentaire de Robert Harvey, veuillez noter qu'il y a déjà 1215 upvotes ajoutées. Votre nouvelle note positive ajoutera-t-elle une valeur substantielle ? :) ...Maintenant c'est 1216 ! C'est un lot .
0 votes
Un très beau blog sur freecodecamp