Je souhaite supprimer une branche localement et à distance.
Échec des tentatives de suppression d'une branche 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 réussir à supprimer la remotes/origin/bugfix
branche localement et à distance?
git
version-control
git-branch
git-push
git-remote
Matthew Rankin
la source
la source
deleted remote-tracking branch
": voir github.com/git/git/commit/…Réponses:
Résumé
Notez que dans la plupart des cas, le nom distant est
origin
. Dans un tel cas, vous devrez utiliser la commande comme ceci.Supprimer la branche locale
Pour supprimer la branche locale , utilisez l'une des méthodes suivantes:
Remarque: L'
-d
option est un alias pour--delete
, qui ne supprime la branche que si elle a déjà été complètement 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 statut fusionné". [Source:man git-branch
]Supprimer la branche distante [Mis à jour le 8-Sep-2017]
Depuis Git v1.7.0 , vous pouvez supprimer une branche distante en utilisant
qui pourrait être plus facile à retenir que
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 également utiliser
git push
l'-d
option 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 une succursale distante [Réponse originale du 5 janvier 2010]
Extrait du chapitre 3 de Pro Git de Scott Chacon:
J'ai émis
git push origin: bugfix
et cela a fonctionné à merveille. Scott Chacon avait raison - je vais vouloir écouter cette page (ou pratiquement l'oreille du chien en répondant à cela sur Stack Overflow).Ensuite, vous devez l'exécuter sur d'autres machines
pour propager les changements.
la source
git fetch --all --prune
sur d'autres machines après avoir supprimé la branche distante sur le serveur. ||| Après avoir supprimé la branche locale avecgit branch -d
et supprimé la branche distante avec d'git push origin --delete
autres machines, il peut toujours y avoir des "branches de suivi obsolètes" (pour les voir fairegit branch -a
). Pour s'en débarrasser, faites-legit fetch --all --prune
.git branch -a
pour afficher toutes les branches, vous pouvez également utilisergit branch -r
pour afficher uniquement les branches distantes. voir aussigit remote show origin
- source: gitready.com/intermediate/2009/02/13/list-remote-branches.htmlgit branch -D Branch_Name
pour me débarrasser de la branche localeLa réponse de Matthew est excellente pour supprimer les branches distantes et j'apprécie également l'explication, mais pour faire une distinction simple entre les deux commandes:
Pour supprimer une branche locale de votre machine:
git branch -d {the_local_branch}
(utilisez-D
plutôt pour forcer la suppression de la branche sans vérifier le statut fusionné)Pour supprimer une branche distante du serveur:
git push origin --delete {the_remote_branch}
Référence: Git: Supprimer une branche (locale ou distante)
la source
-D
force bien les suppressions,-d
vous donne un avertissement s'il n'est pas déjà fusionné.'git branch -d your_branch
vous aurez une erreur commeerror: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
git remote prune <name>
(par exemplegit remote prune origin
) afin de supprimer localement les branches périmées qui n'existent plus dans la télécommande.git branch -a --merged origin/master
Elle répertorie toutes les branches, locales et distantes; qui ont été fusionnés en maître. Informations supplémentaires iciLes 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
Suppression d'une succursale locale
Suppression d'une branche locale de suivi à distance
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 :
X
.X
.origin/X
qui suit la branche distanteX
.L'affiche originale utilisée:
Ce qui ne supprimé branche de suivi à distance locale
origin/bugfix
, et non la branche à distance réellebugfix
surorigin
.Pour supprimer cette branche distante réelle , vous devez
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 agit push
supprimera également la branche de suivi à distance localeorigin/X
, il n'est donc pas nécessaire d'élaguer la branche de suivi à distance obsolète avecgit fetch --prune
ougit 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:É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 à distanceorigin/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 :Voici la citation pertinente des notes de mise à jour 1.6.6 (soulignement le mien):
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
:Voir également
la source
X
etorigin/X
signets dans le clone local (2 branches), et puis il y aX
la télécommande ( en faisant 3 branches).Étapes pour supprimer une branche:
Pour supprimer la branche distante:
Pour supprimer la branche locale , vous disposez de trois méthodes :
Expliquez: OK, expliquez simplement ce qui se passe ici!
Faites simplement
git push origin --delete
pour supprimer votre branche distante uniquement , ajoutez le nom de la branche à la fin et cela la supprimera et la poussera vers la télécommande en même temps ...Aussi,
git branch -D
qui supprime simplement la branche locale seulement ! ...-D
signifie--delete --force
qui supprimera la branche même si elle n'est pas fusionnée (forcer la suppression), mais vous pouvez également utiliser-d
ce qui signifie--delete
qui jette une erreur respective du statut de fusion de la branche ...Je crée également l' image ci-dessous pour montrer les étapes:
la source
git branch -a
affichera les branches locales et distantes.Il vous sera utile de présenter le diagramme.git remote prune origin
Vos copies locales des branches supprimées ne sont pas supprimées par cela. Le même effet est obtenu en utilisantgit fetch --prune
Vous pouvez également utiliser ce qui suit pour supprimer la branche distante
Ce qui fait la même chose que
mais il peut être plus facile de s'en souvenir.
la source
git branch -d <local_branch>
ougit branch -D <local_branch>
pour la suppression forcéeConseil: lorsque vous supprimez des branches à l'aide de
ou
seules les références sont supprimées. Même si la branche est réellement 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 le font
git branch -a
.Pour résoudre ce problème, les membres de votre équipe peuvent tailler les branches supprimées avec
C'est typiquement
git remote prune origin
.la source
git push
opération ci-dessus supprime la branche locale et la branche distante.git remote prune
c'est une façon quelque peu obsolète de supprimer les branches de suivi à distance obsolètes, la nouvelle façon de le faire est d'utilisergit fetch --prune
ougit fetch -p
.Si vous souhaitez supprimer une branche, commencez par payer à la branche autre que la branche à supprimer.
Suppression de la branche locale:
Suppression de la branche distante:
la source
la source
-D
force la suppression. Il est toujours préférable de l'utiliser-d
, ce qui vous rappellera si vous devez faire quelque chose de dangereux.C'est simple: il suffit d'exécuter la commande suivante:
Pour supprimer une branche Git localement et à distance, supprimez d'abord la branche locale à l'aide de cette commande:
(Voici
example
le nom de la branche.)Et après cela, supprimez la branche distante à l'aide de cette commande:
la source
Une autre approche est:
AVERTISSEMENT: cela supprimera toutes les branches distantes qui n'existent pas localement. Ou plus globalement,
fera en sorte que le référentiel distant ressemble à la copie locale du référentiel (les têtes, télécommandes et balises locales sont reflétées sur la télécommande).
la source
J'utilise les éléments suivants dans mes paramètres Bash :
Ensuite, vous pouvez appeler:
la source
git push origin --delete $1
un fichier sur votre chemin appelégit-shoot
etgit shoot branchname
cela fonctionnera aussi.Supprimer localement:
Pour supprimer une branche locale, vous pouvez utiliser:
Pour supprimer une branche de force, utilisez
-D
au lieu de-d
.Supprimer à distance:
Il y a deux options:
Je vous suggère d'utiliser la deuxième façon car elle est plus intuitive.
la source
Depuis janvier 2013, GitHub a inclus un Delete branchbouton à côté de chaque branche dans votre page "Branches".
Article de blog pertinent: créer et supprimer des branches
la source
Si vous souhaitez effectuer ces deux étapes avec une seule commande, vous pouvez lui créer un alias en ajoutant ce qui suit à votre
~/.gitconfig
:Vous pouvez également l'ajouter à votre configuration globale à partir de la ligne de commande à l'aide de
REMARQUE : si vous utilisez
-d
(minuscule d), la branche ne sera supprimée que si elle a été fusionnée. Pour forcer la suppression à se produire, vous devrez utiliser-D
(majuscule D).la source
&&
par;
pour que même si la première commande échoue, la seconde s'exécute toujours (il existe parfois uniquement local ou distant).Pour supprimer votre succursale localement et à distance
Paiement à la succursale principale -
git checkout master
Supprimez votre succursale distante -
git push origin --delete <branch-name>
Supprimez votre succursale locale -
git branch --delete <branch-name>
la source
Vous pouvez également le faire en utilisant
git remote prune origin
Il taille et supprime les branches de suivi à distance d'une
git branch -r
liste.la source
En plus des autres réponses, j'utilise souvent l' outil git_remote_branch . C'est une installation supplémentaire, mais cela vous offre un moyen pratique d'interagir avec les branches distantes. Dans ce cas, supprimer:
Je trouve que j'utilise aussi assez souvent les commandes
publish
ettrack
.la source
Une commande à une ligne pour supprimer à la fois local et distant :
Ou ajoutez l'alias ci-dessous à votre ~ / .gitconfig . Usage:
git kill branch-name
la source
git branch -D
avec précaution dans un script, car il supprime de force une branche sans vérifier qu'elle a été fusionnée. Utilisez-d
pour être en sécurité.Suppression de branches
Et pour supprimer la branche distante:
la source
Supprimer la branche distante
git push origin :<branchname>
Supprimer la branche locale
git branch -D <branchname>
Supprimer les étapes de la branche locale:
la source
git push origin :<branchname>
pousse déjà une branche «vide» vers la télécommande (donc supprime la branche distante)Dites simplement:
la source
est plus facile à retenir que
la source
Vous pouvez maintenant le faire avec l' application GitHub Desktop .
Après avoir lancé l'application
Passer à la branche que vous souhaitez supprimer
Dans le menu "Branche", sélectionnez "Annuler la publication ...", pour supprimer la branche des serveurs GitHub.
Dans le menu "Branche", sélectionnez "Supprimer" nom_branche "..." pour que la branche soit supprimée de votre machine locale (AKA la machine sur laquelle vous travaillez actuellement)
la source
C'est très simple:
Pour supprimer la branche distante
Ou
Pour supprimer une branche locale
la source
--delete
au lieu de-d
supprimer la branche distante.-d
L'option est un alias pour--delete
et si le--delete
travail-d
devrait alors aussi fonctionner, si vous voulez forcer la suppression d'une branche que vous pouvez utiliser à la-D
place de-d
ou--delete
.Pour supprimer localement - (normal)
Si votre branche est en cours de rebasage / fusion et que cela n'a pas été fait correctement, cela signifie que vous obtiendrez une erreur
Rebase/Merge in progress
, donc dans ce cas, vous ne pourrez pas supprimer votre branche.Donc, soit vous devez résoudre le rebasage / fusion. Sinon, vous pouvez forcer la suppression en utilisant,
Pour supprimer à distance :
Vous pouvez faire de même en utilisant:
Représentation graphique:
la source
Cela ne fonctionnera pas si vous avez une balise du même nom que la branche sur la télécommande:
Dans ce cas, vous devez spécifier que vous souhaitez supprimer la branche, pas la balise:
De même, pour supprimer la balise au lieu de la branche que vous utiliseriez:
la source
La plupart des autres réponses entraîneront des erreurs / avertissements. Cette approche est relativement indéréglable, bien que vous puissiez toujours en avoir besoin
git branch -D branch_to_delete
si elle n'est pas entièrement fusionnéesome_other_branch
, par exemple.L'élagage à distance n'est pas nécessaire si vous avez supprimé la branche distante. Il n'est utilisé que pour obtenir les télécommandes les plus à jour disponibles sur un référentiel que vous suivez. J'ai observé
git fetch
va ajouter des télécommandes, pas les supprimer. Voici un exemple de quandgit remote prune origin
fera réellement quelque chose:L'utilisateur A effectue les étapes ci-dessus. L'utilisateur B exécuterait les commandes suivantes pour voir les branches distantes les plus à jour:
la source
J'en ai eu marre de googler pour cette réponse, j'ai donc adopté une approche similaire à la réponse que crizCraig a postée plus tôt.
J'ai ajouté ce qui suit à mon profil Bash:
Ensuite, chaque fois que j'en ai terminé avec une branche (fusionnée
master
, par exemple), j'exécute ce qui suit dans mon terminal:... qui supprime ensuite
my-branch-name
deorigin
tant ainsi que localement.la source
--delete "$@"
et-D "$@"
au lieu de$1
le gérer pour plusieurs branches.git branch -d
(avec des «d» minuscules) d'abord pour s'assurer que les modifications ont été fusionnées, puis de pousser en cas de succès (&&
entre les commandes)Avant d'exécuter
assurez-vous de déterminer d'abord le nom exact de la branche distante en exécutant:
Cela vous dira quoi saisir exactement pour la
<branch>
valeur. (branch
est sensible à la casse!)la source
Utilisation:
Si vous êtes sûr de vouloir le supprimer, exécutez
Maintenant, pour nettoyer les branches distantes supprimées, exécutez
la source