Les réponses courtes
Si vous souhaitez des explications plus détaillées sur les commandes suivantes, consultez les réponses longues dans 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 succursale 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
La réponse longue : il y a trois branches différentes à supprimer!
Lorsque vous traitez la suppression de branches à la fois localement et à distance, gardez à l'esprit qu'il y a trois branches différentes impliquées :
- La branche locale
X
.
- La branche d'origine distante
X
.
- La branche de suivi à distance locale
origin/X
qui suit la branche distante X
.
L'affiche originale utilisée:
git branch -rd origin/bugfix
Ce qui ne supprimé branche de suivi à distance locale origin/bugfix
, et non la branche à distance réelle bugfix
sur origin
.
Pour supprimer cette branche distante réelle , vous devez
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 également les branches de suivi à distance
Notez que la suppression de la branche distante X
de la ligne de commande à l'aide de a git push
supprimera également la branche de suivi à distance locale origin/X
, il n'est donc pas nécessaire d'élaguer la branche de suivi à distance obsolète avec git fetch --prune
ou git fetch -p
. Cependant, cela ne ferait pas de mal si vous le faisiez de toute façon.
Vous pouvez vérifier que la branche de suivi à distance origin/X
a également été supprimée en exécutant ce qui suit:
# 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 l'origine de la branche de suivi à distance locale obsolète / X
Si vous n'avez pas supprimé votre branche distante X
de la ligne de commande (comme ci-dessus), votre référentiel local contiendra toujours (une branche désormais obsolète) de suivi à distance origin/X
. Cela peut se produire si vous avez supprimé une branche distante directement via l'interface Web de GitHub, par exemple.
Un moyen typique de supprimer ces branches de suivi à distance obsolètes (depuis la version 1.6.6 de Git) est de simplement exécuter git fetch
avec --prune
ou plus court -p
. Notez que cela supprime toutes les branches de suivi à distance locales obsolètes pour toutes les branches distantes qui n'existent plus sur la télécommande :
git fetch origin --prune
git fetch origin -p # Shorter
Voici la citation pertinente des notes de mise à jour 1.6.6 (soulignement le mien):
"git fetch" appris --all
et --multiple
options, pour exécuter fetch à partir de nombreux référentiels, et --prune
option pour supprimer les branches de suivi à distance qui sont devenues obsolètes. Celles-ci rendent "git remote update" et "git remote prune" moins nécessaires (il n'est pas prévu de supprimer "remote update" ni "remote prune", cependant).
Alternative à l'élagage automatique ci-dessus pour les branches de suivi à distance obsolètes
Alternativement, au lieu d'élaguer vos branches locales de suivi à distance obsolètes git fetch -p
, vous pouvez éviter de faire l'opération de réseau supplémentaire en supprimant simplement manuellement la ou les branches avec les indicateurs --remote
ou -r
:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Voir également