Comment supprimer une twig Git à la fois localement et à distance?

Je veux supprimer une twig à la fois localement et sur mon fork 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 avec succès la twig remotes/origin/bugfix fois localement et sur GitHub?

Résumé

 $ git push --delete   $ git branch -d  

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

Supprimer une twig locale

Pour supprimer la twig locale , utilisez l’une des options suivantes:

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

Remarque: L’option -d est un alias pour --delete , qui ne supprime la twig que si elle a déjà été entièrement fusionnée dans sa twig en amont. Vous pouvez également utiliser -D , qui est un alias pour --delete --force , qui supprime la twig “indépendamment de son statut fusionné”. [Source: man git-branch ]

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

A partir de Git v1.7.0 , vous pouvez supprimer une twig distante en utilisant

 $ git push  --delete  

qui pourrait être plus facile à retenir que

 $ git push  : 

qui a été ajouté dans Git v1.5.0 “pour supprimer une twig distante ou un tag.”

À partir de Git v2.8.0, vous pouvez également utiliser git push avec l’option -d comme alias pour --delete .

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

Supprimer la succursale distante [Réponse originale du 5 janvier 2010]

Du chapitre 3 de Pro Git par Scott Chacon:

Suppression de twigs distantes

Supposons que vous ayez terminé avec une twig distante. Par exemple, vous et vos collaborateurs avez terminé avec une fonctionnalité et l’avez intégrée dans la twig principale de votre télécommande (ou dans la twig dans laquelle se trouve votre codeline stable). Vous pouvez supprimer une twig distante en utilisant la syntaxe plutôt obtuse git push [remotename] :[branch] . Si vous souhaitez supprimer votre twig serverfix du serveur, vous exécutez les opérations suivantes:

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

Boom. Plus de twig 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 la git push [remotename] [localbranch]:[remotebranch] que nous avons parcourue un peu plus tôt. Si vous [localbranch] partie [localbranch] , alors vous dites essentiellement: «Ne prenez rien de mon côté et faites-le [remotebranch] ».

J’ai publié git push origin :bugfix et cela fonctionnait parfaitement. Scott Chacon avait raison: je voudrais avoir cette page (ou quasiment l’oreille d’un chien en répondant à ceci sur Stack Overflow).

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

 git fetch --all --prune 

pour propager les changements.

La réponse de Matthew est excellente pour supprimer les twigs distantes et j’apprécie également l’explication, mais pour faire une distinction simple entre les deux commandes:

Pour supprimer une twig locale de votre machine:

git branch -d {the_local_branch} (utilisez -D place pour forcer la suppression de la twig sans vérifier le statut de la fusion)

Pour supprimer une twig distante du serveur:

git push origin --delete {the_remote_branch}

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

Les réponses courtes

Si vous souhaitez des explications plus détaillées sur les commandes suivantes, consultez les longues réponses dans la section suivante.

Supprimer une twig distante:

 git push origin --delete  # Git version 1.7.0 or newer git push origin : # Git versions older than 1.7.0 

Supprimer une twig locale:

 git branch --delete  git branch -d  # Shorter version git branch -D  # Force delete un-merged twigs 

Suppression d’une twig de suivi à distance locale:

 git branch --delete --remotes / git branch -dr / # Shorter git fetch  --prune # Delete multiple obsolete tracking twigs git fetch  -p # Shorter 

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

Lorsque vous supprimez des twigs à la fois localement et à distance, gardez à l’esprit qu’il y a 3 twigs différentes impliquées :

  1. La twig locale X
  2. La twig d’origine distante X
  3. L’ origin/X twig de suivi à distance locale qui suit la twig distante X

Visualisation de 3 branches

L’affiche originale utilisée

 git branch -rd origin/bugfix 

qui a seulement supprimé l’ origin/bugfix twig de suivi à distance locale , et non le bugfix twig distante à l’ origin .

Diagramme 2

Pour supprimer cette succursale distante , vous avez besoin de

 git push origin --delete bugfix 

Diagramme 3

Détails supplémentaires

Les sections suivantes décrivent des détails supplémentaires à prendre en compte lors de la suppression de vos twigs distantes et de suivi à distance.

La suppression des twigs distantes supprime également les twigs de suivi à distance

Notez que la suppression de la twig distante X partir de la ligne de commande en utilisant git push supprime également l’ origin/X twig de suivi à distance locale . Il n’est donc pas nécessaire d’élaguer la twig 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 l’ origin/X twig de suivi à distance a également été supprimée en exécutant les opérations suivantes:

 # View just remote-tracking twigs git branch --remotes git branch -r # View both ssortingctly local as well as remote-tracking twigs git branch --all git branch -a 

Élagage de l’origine / X de la twig de suivi à distance locale obsolète

Si vous n’avez pas supprimé votre twig X distante de la ligne de commande (comme ci-dessus), votre référentiel local contiendra toujours l’ origin/X twig de suivi à distance (désormais obsolète). Cela peut se produire si vous avez supprimé une twig distante directement via l’interface Web de GitHub, par exemple.

Une façon typique de supprimer ces twigs de suivi à distance obsolètes (depuis la version 1.6.6 de Git) consiste à exécuter simplement git fetch avec l’ --prune ou encore --prune -p . Notez que cela supprime toutes les twigs locales de suivi à distance obsolètes pour toutes les twigs 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 version 1.6.6 (accent mis sur le mien):

“git fetch” --multiple options --all et --multiple , pour exécuter l’extraction de nombreux référentiels et l’ option --prune pour supprimer les twigs de suivi distantes --prune obsolètes. Celles-ci rendent moins nécessaire la “mise à jour à distance de git” et la “élimination à distance de git” (il n’est pas prévu de supprimer “mise à jour à distance”, ni “élagage à distance”).

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

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

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

Voir également

  • Page de manuel de git-branch (1) .
  • git-fetch (1) Page Manuelle .
  • Pro Git § 3.5 Git Branching – Branches distantes .

Étapes pour supprimer une twig:

pour supprimer la twig distante:

 git push origin --delete  

pour supprimer la twig locale , vous avez trois possibilités:

 1: git branch -D  2: git branch --delete --force  //same as -D 3: git branch --delete  //error on unmerge 

Expliquez: OK, expliquez simplement ce qui se passe ici!

Il suffit de faire git push origin --delete pour supprimer votre twig distante UNIQUEMENT , append le nom de la twig à la fin et cela va supprimer et le pousser à distance en même temps …

En outre, git branch -D , qui supprime simplement la twig locale UNIQUEMENT ! …

-D signifie --delete --force qui supprimera la twig même si elle n’est pas fusionnée (force delete), mais vous pouvez aussi utiliser -d qui signifie --delete qui --delete une erreur respective de l’état de fusion de twig …

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

supprimer une branche distante et locale dans git

Vous pouvez également utiliser les éléments suivants pour supprimer la twig distante.

 git push --delete origin serverfix 

Qui fait la même chose que

 git push origin :serverfix 

mais cela peut être plus facile à retenir.

Si vous souhaitez supprimer une twig, vérifiez d’abord la twig autre que la twig à supprimer.

 git checkout other_than_branch_to_be_deleted 

Supprimer la twig locale:

 git branch -D branch_to_be_deleted 

Suppression de la twig distante:

 git push origin --delete branch_to_be_deleted 

Astuce: lorsque vous supprimez des twigs en utilisant

 git branch -d  # deletes local branch 

ou

 git push origin : # deletes remote branch 

seules les références sont supprimées. Même si la twig 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 twigs supprimées sont toujours visibles lorsqu’elles font une git branch -a .

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

 git remote prune  

C’est généralement git remote prune origin .

 git branch -D  git branch -D -r origin/ git push origin : 

C’est simple: lancez simplement la commande suivante:

Pour supprimer une twig Git à la fois localement et à distance, commencez par supprimer la twig locale à l’aide de la commande:

 git branch -d example 

(ici, le nom de la twig)

Et après cela, supprimez la twig distante en utilisant la commande:

 git push origin :example 

Une autre approche est

 git push --prune origin 

ATTENTION: Ceci supprimera toutes les twigs distantes qui n’existent pas localement. Ou plus globalement,

 git push --mirror 

fera en sorte que le repository distant ressemble à la copie locale du référentiel (les têtes locales, les télécommandes et les balises sont mises en miroir à distance).

J’utilise les éléments suivants dans mes parameters Bash :

 alias git-shoot="git push origin --delete" 

Ensuite, vous pouvez appeler:

 git-shoot branchname 

Depuis janvier 2013, GitHub a ajouté un bouton Supprimer une twig à côté de chaque twig de votre page “Branches”.

Article de blog pertinent: Créer et supprimer des twigs

Si vous souhaitez effectuer ces deux étapes avec une seule commande, vous pouvez créer un alias en ajoutant ce qui suit à votre ~/.gitconfig :

 [alias] rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f" 

Vous pouvez également append ceci à votre configuration globale à partir de la ligne de commande en utilisant

 git config --global alias.rmbranch \ '!f(){ git branch -d ${1} && git push origin --delete ${1}; };f' 

REMARQUE : Si vous utilisez -d (minuscule d), la twig ne sera supprimée que si elle a été fusionnée. Pour forcer la suppression, vous devrez utiliser -D (D majuscule).

Pour supprimer votre twig localement et à distance

  • Commander à la twig principale – Master Checkout git checkout master

  • Supprimez votre twig distante – git push origin --delete

  • Supprimez votre twig locale – twig git branch --delete

Supprimer localement:

Pour supprimer une twig locale, vous pouvez utiliser:

 git branch -d branch_name 

Pour supprimer une twig de force, utilisez -D au lieu de -d .

 git branch -D branch_name 

Supprimer à distance:

Il y a deux options:

 git push origin :branchname git push origin --delete branchname 

Je vous suggère d’utiliser la 2ème manière car c’est plus intuitif.

Vous pouvez également le faire en utilisant git remote prune origin :

 $ git remote prune origin Pruning origin URL: git@example.com/yourrepo.git * [pruned] origin/some-branchs 

Il élague et supprime les twigs de suivi à distance à partir d’une liste git branch -r .

En plus des autres réponses, j’utilise souvent l’outil git_remote_branch . C’est une installation supplémentaire, mais cela vous permet d’interagir facilement avec les succursales distantes. Dans ce cas, supprimer:

 grb delete branch 

Je trouve que j’utilise aussi souvent les commandes de publish et de track .

Supprimer des twigs

Supposons que notre travail sur la twig “contact-form” soit terminé et que nous l’avons déjà intégré dans “master”. Comme nous n’en avons plus besoin, nous pouvons le supprimer (localement):

 $ git branch -d contact-form 

Et pour supprimer la twig distante:

 git push origin --delete contact-form 

Une commande liner supprime à la fois locale et distante :

D=branch-name; git branch -D $D; git push origin :$D

ou ajoutez l’alias ci-dessous à votre ~ / .gitconfig ; utilisation: git kill branch-name

 [alias] kill = "!f(){ git branch -D \"$1\"; git push origin --delete \"$1\"; };f" 

Supprimer une twig distante

git push origin :

Supprimer une twig locale

git branch -D

Supprimer les étapes de la twig locale:

  1. caisse à une autre succursale
  2. supprimer une twig locale

Dites simplement:

 git branch -d  git push origin : 

Maintenant, vous pouvez le faire avec l’application GitHub Desktop .

Après avoir lancé l’application

  1. Cliquez sur le projet contenant la twig
  2. Passez à la twig que vous souhaitez supprimer branche de commutation
  3. Dans le menu “Branch”, sélectionnez “Unpublish …” pour supprimer la twig des serveurs GitHub. branche non publiée
  4. Dans le menu “Branche”, sélectionnez “Supprimer” nom_twig “… pour que la twig soit supprimée de votre machine locale (la machine sur laquelle vous travaillez actuellement). supprimer une branche locale

Pour supprimer localement – (Normal),

 git branch -d my_branch 

Si votre twig dans le réaménagement / fusion progresse et que cela n’a pas été fait correctement, vous obtiendrez une erreur Rebase/Merge in progress . Dans ce cas, vous ne pourrez pas supprimer votre twig.

Donc soit vous avez besoin de résoudre le rebasage / la fusion, sinon vous pouvez forcer Supprimer en utilisant,

 git branch -D my_branch 

Pour supprimer dans Remote:

 git push --delete origin my_branch 

peut faire la même chose en utilisant,

 git push origin :my_branch # easy to remember both will do the same. 

Représentation graphique,

entrer la description de l'image ici

 git push origin --delete branchName 

est plus facile à retenir que

 git push origin :branchName 

Cela ne fonctionnera pas si vous avez une balise avec le même nom que la twig de la télécommande:

 $ git push origin :branch-or-tag-name error: dst refspec branch-or-tag-name matches more than one. error: failed to push some refs to 'git@github.com:SomeName/some-repo.git' 

Dans ce cas, vous devez spécifier que vous souhaitez supprimer la twig, pas la balise:

 git push origin :refs/heads/branch-or-tag-name 

De même, pour supprimer la balise au lieu de la twig que vous utiliseriez:

 git push origin :refs/tags/branch-or-tag-name 

La plupart des autres réponses entraîneront des erreurs / avertissements. Cette approche est relativement infaillible bien que vous ayez toujours besoin de git branch -D branch_to_delete si elle n’est pas complètement fusionnée dans some_other_branch , par exemple.

 git checkout some_other_branch git push origin :branch_to_delete git branch -d branch_to_delete 

L’élagage à distance n’est pas nécessaire si vous avez supprimé la twig distante. Il est utilisé uniquement pour obtenir les télécommandes les plus récentes disponibles sur un repo que vous suivez. J’ai remarqué que git fetch va append des télécommandes, pas les supprimer. Voici un exemple de quand git remote prune origin fera réellement quelque chose:

L’utilisateur A effectue les étapes ci-dessus. L’utilisateur B exécutera les commandes suivantes pour voir les twigs distantes les plus récentes

 git fetch git remote prune origin git branch -r 

J’en ai eu marre de googler pour cette réponse, alors j’ai adopté une approche similaire à la réponse que crizCraig a affichée plus tôt.

Ajout de ce qui suit à mon profil Bash:

 function gitdelete(){ git push origin --delete $1 git branch -D $1 } 

Ensuite, chaque fois que j’ai terminé avec une twig (fusionnée dans master , par exemple), je lance ce qui suit dans mon terminal:

 gitdelete my-branch-name 

… qui supprime ensuite my-branch-name de my-branch-name d’ origin aussi bien que localement.

 git push origin :bugfix # Deletes remote branch git branch -d bugfix # Must delete local branch manually 

Si vous êtes sûr de vouloir le supprimer, exécutez

 git branch -D bugfix 

Maintenant, pour nettoyer les twigs distantes supprimées, exécutez

 git remote prune origin 

Avant d’exécuter

 git branch --delete  

assurez-vous de déterminer d’abord le nom EXACT de la twig distante en exécutant:

 git ls-remote 

Cela vous dira quoi entrer EXACTEMENT pour la valeur . (la branch est sensible à la casse!)

Mashup de toutes les autres réponses. Nécessite Ruby 1.9.3+, testé uniquement sur OS X.

Appelez ce fichier git-remove , rendez-le exécutable et placez-le dans votre chemin. Utilisez ensuite, par exemple, git remove temp .

 #!/usr/bin/env ruby require 'io/console' if __FILE__ == $0 branch_name = ARGV[0] if (ARGV[0]) print "Press Y to force delete local and remote branch #{branch_name}..." response = STDIN.getch if ['Y', 'y', 'yes'].include?(response) puts "\nContinuing." `git branch -D #{branch_name}` `git branch -D -r origin/#{branch_name}` `git push origin --delete #{branch_name}` else puts "\nQuitting." end end