Question Comment supprimer une branche Git à la fois localement et à distance?


Je veux supprimer une branche à la fois localement et sur ma branche de projet distant sur GitHub.

Échec des tentatives de suppression de la succursale distante

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Already up-to-date.

Que dois-je faire différemment pour supprimer le remotes/origin/bugfix branche à la fois localement et sur GitHub?


13818
2018-01-05 01:12


origine


Réponses:


Résumé

$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

Notez que dans la plupart des cas, le nom distant est origin.

Supprimer la succursale locale

Pour supprimer le local utilisez une des branches suivantes:

$ git branch -d branch_name
$ git branch -D branch_name

Remarque: le -d option est un alias pour --delete, qui ne supprime la branche que si elle a déjà été entièrement fusionnée dans sa branche amont. Vous pouvez également utiliser -D, qui est un alias pour --delete --force, qui supprime la branche "quel que soit son état fusionné". [La source: man git-branch]

Supprimer la succursale distante [Mis à jour le 8 sept. 2017]

À partir de Git v1.7.0, vous pouvez supprimer un éloigné branche en utilisant

$ git push <remote_name> --delete <branch_name>

qui pourrait être plus facile à retenir que

$ git push <remote_name> :<branch_name>

qui a été ajouté dans Git v1.5.0 "pour supprimer une branche distante ou une balise."

À partir de Git v2.8.0 vous pouvez aussi utiliser git push avec le -d option comme un alias pour --delete.

Par conséquent, la version de Git que vous avez installée indiquera si vous devez utiliser la syntaxe plus facile ou plus difficile.

Delete Remote Branch [Réponse d'origine du 5 janvier 2010]

Du chapitre 3 de Pro Git par Scott Chacon:

Suppression de branches distantes

Supposons que vous ayez terminé avec une branche distante - disons que vous et vos collaborateurs avez fini avec une fonctionnalité et que vous l'avez fusionnée dans la branche principale de votre télécommande (ou dans la branche de votre codeline stable). Vous pouvez supprimer une branche distante en utilisant la syntaxe plutôt obtuse git push [remotename] :[branch]. Si vous souhaitez supprimer votre branche serverfix du serveur, exécutez la commande suivante:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

Boom. Plus de branche sur votre serveur. Vous voudrez peut-être écouter cette page, car vous aurez besoin de cette commande, et vous oublierez probablement la syntaxe. Une façon de se souvenir de cette commande est de rappeler git push [remotename] [localbranch]:[remotebranch] syntaxe que nous sommes allés un peu plus tôt. Si vous laissez le [localbranch] partie, alors vous dites essentiellement, "Ne rien prendre de mon côté et le faire être [remotebranch]"

J'ai émis git push origin :bugfix et ça a fonctionné à merveille. Scott Chacon avait raison - je vais vouloir oreille de chien cette page (ou presque l'oreille du chien en répondant à cela sur Stack Overflow).

Ensuite, vous devriez l'exécuter sur d'autres machines

git fetch --all --prune

pour propager les changements.


17189
2018-01-05 01:13



La réponse de Matthew est grande pour enlever éloigné branches et j'apprécie aussi l'explication, mais pour faire une simple distinction entre les deux commandes:

Pour supprimer un branche locale de votre machine:

git branch -d {the_local_branch} (utilisation -D au lieu de forcer la suppression de la branche sans vérifier le statut fusionné)

Pour supprimer un branche distante depuis le serveur:

git push origin --delete {the_remote_branch}

Référence: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote


2867
2018-06-12 14:51



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.

Supprimer une branche distante:

git push origin --delete <branch>  # Git version 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 tracking branches
git fetch <remote> -p      # Shorter

La réponse longue: il y a 3 branches différentes à supprimer!

Lorsque vous devez supprimer des branches localement et à distance, gardez à l'esprit que il y a 3 branches différentes impliquées:

  1. La succursale locale X.
  2. La branche d'origine distante X.
  3. La branche locale de suivi à distance origin/X qui suit la branche distante X.

Visualization of 3 branches

L'affiche originale 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 sur origin.

Diagram 2

Pour supprimer cette branche distante réelle, vous avez besoin

git push origin --delete bugfix

Diagram 3

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.

La suppression de branches distantes supprime également 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  va également supprimer la branche locale de suivi à distance  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, mais ça ne ferait pas de mal si tu le faisais quand même.

Vous pouvez vérifier que la branche de suivi à distance origin/X a également été supprimé 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

Suppression de l'origine obsolète locale de la branche de suivi à distance / X

Si vous n'avez pas supprimé votre succursale distante X à partir de la ligne de commande (comme ci-dessus), votre dépôt local contiendra toujours une branche de suivi à distance (désormais obsolète) origin/X. Cela peut arriver si vous avez supprimé 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 Git version 1.6.6) est de simplement exécuter git fetch avec le --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 de la 1.6.6 notes de version (Je souligne):

"git fetch" appris  --all et --multipleoptions, pour exécuter chercher à partir de   de nombreux dépôts, et --prune option pour supprimer le suivi à distance   branches qui sont devenues viciées.  Ceux-ci font "git remote update" et "git remote update"   prune à distance "moins nécessaire (il n'y a pas de plan pour supprimer" à distance   mise à jour "ni" prune à distance ", cependant).

Alternative à l'élagage automatique ci-dessus pour les branches de suivi à distance obsolètes

Alternativement, au lieu d'élaguer vos branches de suivi à distance locales obsolètes à travers git fetch -p, vous pouvez éviter d'effectuer l'opération réseau supplémentaire en supprimant manuellement la ou les branches avec le --remote ou -r drapeaux:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

Voir également


1640
2018-05-30 18:32



Étapes pour supprimer une branche:

pour supprimer le branche distante:

git push origin --delete <your_branch> 

pour supprimer le branche locale, vous avez trois façons:

1: git branch -D <branch_name> 

2: git branch --delete --force <branch_name>  //same as -D

3: git branch --delete  <branch_name>         //error on unmerge

Explique: OK, explique ce qui se passe ici!

Simplement faire git push origin --delete à supprimer votre branche distante SEULEMENT, ajouter le nom de la branche à la fin et cela va supprimer et pousser à la télécommande en même temps ...

Aussi, git branch -D, qui supprime simplement la branche locale SEULEMENT! ...

-D signifie --delete --force qui va supprimer la branche même si elle n'est pas fusionnée (force delete), mais vous pouvez aussi utiliser -d Qui veut dire --delete qui jette une erreur respective du statut de fusion de branche ...

Je crée également l'image ci-dessous pour montrer les étapes:

delete a remote and local branch in git


922
2018-06-27 13:13



Vous pouvez également utiliser ce qui suit pour supprimer la branche distante.

git push --delete origin serverfix

Qui fait la même chose que

git push origin :serverfix

mais il peut être plus facile de se souvenir.


703
2017-10-27 22:22



Si vous voulez supprimer une branche, commencez par extraire la branche autre que la branche à supprimer.

git checkout other_than_branch_to_be_deleted

Suppression de la branche locale:

git branch -D branch_to_be_deleted

Suppression de la branche distante:

git push origin --delete branch_to_be_deleted

344
2017-10-07 13:52



Astuce: Lorsque vous supprimez des branches en utilisant

git branch -d <branchname>    # deletes local branch

ou

git push origin :<branchname> # deletes remote branch

seules les références sont supprimées. Même si la branche est effectivement supprimée sur la télécommande, les références à celle-ci existent toujours dans les référentiels locaux des membres de votre équipe. Cela signifie que pour les autres membres de l'équipe, les branches supprimées sont toujours visibles lorsqu'elles git branch -a.

Pour résoudre ce problème, les membres de votre équipe peuvent élaguer les branches supprimées avec

git remote prune <repository>

C'est typiquement git remote prune origin.


329
2017-11-07 13:02



git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

247
2017-10-24 17:36