Je veux supprimer une branche localement et à distance.
$ 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 branche remotes/Origin/bugfix
à la fois localement et à distance?
$ git Push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>
Notez que dans la plupart des cas, le nom distant est Origin
.
Pour supprimer la branche locale, utilisez l'une des méthodes suivantes:
$ git branch -d branch_name
$ git branch -D branch_name
Remarque: L'option -d
est un alias pour --delete
, qui supprime la branche uniquement si elle a déjà été complètement fusionnée dans sa branche en amont. Vous pouvez également utiliser -D
, qui est un alias de --delete --force
, qui supprime la branche "quel que soit son statut fusionné". [Source: man git-branch
]
À partir de Git v1.7.0 , vous pouvez supprimer une brancheremoteà l'aide de
$ 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 é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.
Extrait du chapitre 3 de Pro Git de Scott Chacon:
Suppression de branches distantes
Supposons que vous ayez terminé avec une branche distante - par exemple, vos collaborateurs et vous-même en avez fini avec une fonctionnalité et l'avez fusionnée dans la branche principale de votre télécommande (ou quelle que soit la branche dans laquelle se trouve votre ligne de code stable). Vous pouvez supprimer une branche distante en utilisant la syntaxe plutôt obtuse
git Push [remotename] :[branch]
. Si vous souhaitez supprimer votre branche de correctif de serveur du serveur, exécutez la procédure suivante:$ git Push Origin :serverfix To [email protected]:schacon/simplegit.git - [deleted] serverfix
Boom. Plus de branche sur votre serveur. Vous voudrez peut-être parcourir cette page, car vous aurez besoin de cette commande et vous oublierez probablement la syntaxe. Une façon de se souvenir de cette commande consiste à rappeler la syntaxe
git Push [remotename] [localbranch]:[remotebranch]
que nous avons déjà évoquée un peu plus tôt. Si vous oubliez la partie[localbranch]
, vous dites en gros: «Ne prenez rien de mon côté et faites en _[remotebranch]
».
J'ai publié git Push Origin :bugfix
et cela a fonctionné à merveille. Scott Chacon avait raison - je voudrais une oreille de chien cette page (ou une oreille de chien en répondant à cette question dans Stack Overflow).
Ensuite, vous devriez l'exécuter sur d'autres machines
git fetch --all --Prune
propager les changements.
La réponse de Matthew est idéale pour supprimer les distantes branches et j'apprécie également l'explication, mais pour faire une distinction simple entre les deux commandes:
Pour supprimer unbranche localede votre ordinateur:
git branch -d {the_local_branch}
(utilisez -D
à la place pour forcer la suppression de la branche sans vérifier le statut fusionné)
Pour supprimer unbranche distantedu serveur:
git Push Origin --delete {the_remote_branch}
Référence: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote
Si vous souhaitez des explications plus détaillées sur les commandes suivantes, reportez-vous aux réponses détaillées 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
Supprimer 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 de suivi à distance locale:
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
Lors de la suppression de branches à la fois localement et à distance, gardez à l'esprit que 3 branches différentes sont impliquées :
X
.X
.Origin/X
qui suit la branche distante X
.L'affiche originale utilisée
git branch -rd Origin/bugfix
qui a seulement supprimé sa branche de suivi à distance locale Origin/bugfix
, et non la branche distante réelle bugfix
sur Origin
.
Pour supprimer cette branche distante réelle , vous avez besoin de
git Push Origin --delete bugfix
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.
Notez que la suppression de la branche distante X
de la ligne de commande à l'aide d'un git Push
supprime également la branche de suivi à distance locale Origin/X
; il n'est donc pas nécessaire d'élaguer la branche obsolète de suivi à distance avec git fetch --Prune
ou git fetch -p
. ça 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ée en exécutant les opérations suivantes:
# 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
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 colonne désormais obsolète) de suivi à distance Origin/X
. Cela peut arriver si vous supprimez une branche distante directement via l'interface Web de GitHub, par exemple.
Un moyen typique de supprimer ces branches obsolètes de suivi à distance (depuis la version 1.6.6 de Git) consiste simplement à exécuter git fetch
avec le --Prune
ou le -p
plus court. Notez que cela supprime toutes les branches obsolètes de suivi à distance locales 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 version 1.6.6 (souligné par moi):
"git fetch" appris
--all
et--multiple
options, pour lancer la récupération depuis de nombreux référentiels, et--Prune
pour supprimer les branches de suivi distantes devenues obsolètes. Cela rend "mise à jour distante git" et "prunissage distant git" moins nécessaires (il n'est pas prévu de supprimer "mise à jour distante" ni "élagage distant").
Sinon, au lieu d'élaguer vos branches obsolètes de suivi à distance via git fetch -p
, vous pouvez éviter d'effectuer l'opération réseau supplémentaire en supprimant simplement la ou les branches avec les indicateurs --remote
ou -r
:
git branch --delete --remotes Origin/X
git branch -dr Origin/X # Shorter
Pour supprimer la branche distante:
git Push Origin --delete <your_branch>
Pour supprimer la 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
Expliquez: OK, expliquez simplement ce qui se passe ici!
Il suffit de faire git Push Origin --delete
dans supprimer votre branche distante UNIQUEMENT , ajouter le nom de la branche à la fin. Cette action sera supprimée et transmise à la télécommande en même temps ...
En outre, git branch -D
, qui supprime simplement la branche localeUNIQUEMENT! ...
-D
signifie --delete --force
qui supprimera la branche même si elle n’a pas été fusionnée (suppression forcée), mais vous pouvez également utiliser -d
qui signifie --delete
qui jette une erreur respective du statut de fusion de la branche ...
Je crée aussi l'image ci-dessous pour montrer les étapes:
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.
Si vous souhaitez supprimer une branche, commencez par extraire à 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
Conseil: lorsque vous supprimez des branches à l’aide de
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 réellement supprimée de 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 font un git branch -a
.
Pour résoudre ce problème, les membres de votre équipe peuvent tailler les branches supprimées avec
git remote Prune <repository>
C'est typiquement git remote Prune Origin
.
git branch -D <name-of-branch>
git branch -D -r Origin/<name-of-branch>
git Push Origin :<name-of-branch>
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 la commande suivante:
git branch -d example
(ici example
est le nom de la branche)
Et après cette suppression de la branche distante à l'aide de la commande:
git Push Origin :example
Une autre approche est: -
git Push --Prune Origin
AVERTISSEMENT: Ceci supprimera toutes les branches distantes qui n'existent pas localement. ou de manière plus complète,
git Push --mirror
fera en sorte que le référentiel distant ressemble à la copie locale du référentiel (les en-têtes locaux, les télécommandes et les balises sont dupliqués sur le système distant).
J'utilise les éléments suivants dans mes Bash settings:
alias git-shoot="git Push Origin --delete"
Ensuite, vous pouvez appeler:
git-shoot branchname
Depuis janvier 2013, GitHub a inclus un Delete branch bouton à côté de chaque branche dans votre page "Branches".
Article de blog pertinent: Créer et supprimer des branches
Si vous souhaitez exécuter ces deux étapes avec une seule commande, vous pouvez créer un alias en ajoutant le code ci-dessous à votre ~/.gitconfig
:
[alias]
rmbranch = "!f(){ git branch -d ${1} && git Push Origin --delete ${1}; };f"
Alternativement, vous pouvez ajouter 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'
NOTE: Si vous utilisez -d
(minuscule d), la branche ne sera supprimée que si elle a été fusionnée. Pour forcer la suppression, vous devrez utiliser -D
(majuscule D).
Supprimer localement:
Pour supprimer une branche locale, vous pouvez utiliser:
git branch -d <branch_name>
Pour supprimer de force une branche, 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 suggérerais que vous utilisiez la 2ème manière car elle est plus intuitive.
Pour supprimer votre succursale localement et à distance
Passer à la branche principale - git checkout master
Supprimer votre branche distante - git Push Origin --delete <branch-name>
Supprimer votre succursale locale - git branch --delete <branch-name>
Vous pouvez aussi le faire en utilisant git remote Prune Origin
$ git remote Prune Origin
Pruning Origin
URL: [email protected]/yourrepo.git
* [pruned] Origin/some-branchs
Il élague et supprime les branches de suivi à distance 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 vous offre un moyen pratique d'interagir avec les branches distantes. Dans ce cas, supprimer:
grb delete branch
Je constate que j'utilise aussi assez souvent les commandes publish
et track
Une ligne commande delete 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"
Supposons que notre travail sur la "fiche de contact" de branche est terminé et que nous l'avons déjà intégré dans "maître". Puisque nous n'en avons plus besoin, nous pouvons le supprimer (localement):
$ git branch -d contact-form
Et pour supprimer la branche distante:
git Push Origin --delete contact-form
Supprimer une branche distante
git Push Origin :<branchname>
Supprimer la branche locale
git branch -D <branchname>
Supprimer les étapes de la branche locale:
Dites simplement:
git branch -d <branch-name>
git Push Origin :<branch-name>
Maintenant, vous pouvez le faire avec GitHub Desktop app.
Après avoir lancé l'application
git Push Origin --delete <branch Name>
est plus facile à retenir que
git Push Origin :branchName
Pour supprimer localement - (Normal),
git branch -d my_branch
Si votre branche est en train de rebaser/fusionner la progression 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 branche.
Donc, soit votre besoin de résoudre le rebasage/fusion, sinon vous pouvez forcer la suppression 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,
Cela ne fonctionnera pas si vous avez une étiquette portant le même nom que la branche 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 '[email protected]:SomeName/some-repo.git'
Dans ce cas, vous devez spécifier que vous souhaitez supprimer la branche, pas la balise:
git Push Origin :refs/heads/branch-or-tag-name
De même, pour supprimer la balise à la place de la branche, vous utiliseriez:
git Push Origin :refs/tags/branch-or-tag-name
Beaucoup d'autres réponses conduiront à des erreurs/avertissements. Cette approche est relativement infaillible bien que vous ayez peut-être encore besoin de git branch -D branch_to_delete
s'il n'est pas complètement fusionné 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 branche distante. Il est uniquement utilisé pour obtenir les télécommandes les plus récentes disponibles sur un référentiel que vous suivez. J'ai observé que git fetch
va ajouter des télécommandes, pas les supprimer. Voici un exemple de moment où git remote Prune Origin
fera réellement quelque chose:
L'utilisateur A effectue les étapes ci-dessus. L'utilisateur B doit exécuter les commandes suivantes pour afficher les branches 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 pour la réponse que crizCraig a publié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 branche (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 Origin
ainsi que localement.
Avant d'exécuter
git branch --delete <branch>
assurez-vous d’abord de déterminer le nom EXACT de la branche distante en exécutant:
git ls-remote
Cela vous indiquera quoi entrer EXACTEMENT pour la valeur <branch>
. (branch
est sensible à la casse!)
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, lancez
git branch -D bugfix
Maintenant, pour nettoyer les branches supprimées, exécutez
git remote Prune Origin
Mashup de toutes les autres réponses. Nécessite Ruby 1.9.3+
, testé seulement sur OS X.
Appelez ce fichier git-remove
, rendez-le exécutable et mettez-le dans votre chemin. Ensuite, utilisez, 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
J'ai ajouté les alias suivants à mon fichier .gitconfig
. Cela me permet de supprimer des branches avec ou sans spécifier le nom de la branche. Le nom de la branche est défini par défaut sur la branche actuelle si aucun argument n'est transmis.
[alias]
branch-name = rev-parse --abbrev-ref HEAD
rm-remote-branch = !"f() { branch=${1-$(git branch-name)}; git Push Origin :$branch; }; f"
rm-local-branch = !"f() { branch=${1-$(git branch-name)}; git checkout master; git branch -d $branch; }; f"
rm-branch-fully = !"f() { branch=${1-$(git branch-name)}; git rm-local-branch $branch; git rm-remote-branch $branch; }; f"
Une option alternative à la ligne de commande pour la suppression de branches distantes est la page de branches GitHub .
Voir par exemple: https://github.com/angular/angular.js/branches
Trouvé dans la page Code
-> Branches
d'un référentiel GitHub.
Je préfère généralement la ligne de commande moi-même, mais cette page GitHub contient beaucoup plus d'informations sur les branches, telles que la date de dernière mise à jour et l'utilisateur , et le nombre de commits à venir et à venir . C'est utile lorsque vous traitez avec un grand nombre de branches.
J'ai également eu des problèmes similaires, et cela semble fonctionner: Cela supprime la branche locale. git branch -d the_local_branch
Cela supprime la branche distante git Push Origin :the_remote_branch
La réponse est bonne, mais, dans le cas où vous auriez une tonne de branches, les supprimer une par une localement et à distance serait une tâche fastidieuse. Vous pouvez utiliser ce script pour automatiser ces tâches.
branch_not_delete=( "master" "develop" "our-branch-1" "our-branch-2")
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do
# delete prefix remotes/Origin/ from branch name
branch_name="$(awk '{gsub("remotes/Origin/", "");print}' <<< $branch)"
if ! [[ " ${branch_not_delete[*]} " == *" $branch_name "* ]]; then
# delete branch remotly and locally
git Push Origin :$branch_name
fi
done
Source: enlevant-git-branches-at-once
En utilisant GitBash vous pouvez exécuter les tâches suivantes:
git branch --delete <branch>
Depuis l'application de bureau GitHub, lorsque la branche est extraite, vous pouvez supprimer la branche Local via la barre de menus Branch:
Si vous ARE NOT en utilisant l'application de bureau GitHub et que vous utilisez un IDE comme Visual Studio pour votre contrôle de source local, il vous suffit de procéder en quelques étapes rapides:
Ensuite, une fois connecté à votre compte GitHub en ligne, accédez au référentiel et cliquez sur l'onglettoutes les branches. À partir de là, il vous suffit de cliquer sur la petite icône de corbeille située à droite du nom du brach à supprimer.
* N'oubliez pas que si la branche n'est pas publiée, vous n'avez pas besoin de la supprimer de votre référentiel en ligne.
J'ai créé la fonction pratique suivante dans mon fichier .bash_aliases:
git-delete-branch()
{
if [[ -n $1 ]]; then
git checkout master > /dev/null;
branch_name="$1";
echo "Deleting local $branch_name branch...";
git branch -D "$branch_name";
echo "Deleting remote $branch_name branch...";
git Push Origin --delete "$branch_name";
git remote Prune Origin;
echo "Your current branches are:";
git branch -a;
else
echo "Usage: git-delete-branch <branch_name>";
fi
}
Selon le dernier document utilisant terminal, nous pouvons supprimer le chemin suivant.
supprimer en local:
git branch -D usermanagement
supprimer dans un emplacement distant:
git Push --delete Origin usermanagement
C'est très simple
Pour supprimer une branche distante
git Push -d Origin <branch-name>
OR
git Push Origin :<branch-name>
Pour supprimer une branche locale
git branch -D <branch-name>