Je souhaite supprimer toutes les branches répertoriées dans la sortie de ...
$ git branch
... mais en gardant la branche actuelle, en une seule étape . Est-ce possible? Si c'est le cas, comment?
git
git-branch
sensorario
la source
la source
Réponses:
Sur la base de la réponse @pankijs, j'ai créé deux alias git:
À ajouter dans
~/.gitconfig
Et, comme @torek l'a souligné:
En gros, n'utilisez jamais la
-force
version si vous n'êtes pas sûr à 300% de ne rien perdre d'important. Parce que c'est perdu pour toujours .la source
git branch branchname commitid
supprimera toutes les branches sauf master (remplacez master par la branche que vous souhaitez conserver, mais ensuite cela supprimera master)
la source
grep -v ^*
.master-copy
, par exemplegrep -v "^ *master$"
grep -v "master\|my-other-branch"
.d'abord (passez à la branche que vous souhaitez conserver> ex : master ):
deuxième ( assurez- vous que vous êtes sur master )
la source
git branch -D $(git branch).Trim()
.git branch -d
(ou-D
) autorise plusieurs noms de branche, mais il est un peu délicat de fournir automatiquement "toutes les branches locales à l'exception de celle sur laquelle je suis maintenant" sans écrire au moins un peu de code.La "meilleure" méthode (formellement correcte) est d'utiliser
git for-each-ref
pour obtenir les noms de branche:mais il est encore plus difficile de savoir sur quelle branche vous vous trouvez (
git symbolic-ref HEAD
est la méthode "formellement correcte" pour cela, si vous voulez écrire un script sophistiqué).Plus commodément, vous pouvez utiliser
git branch
, qui imprime les noms de vos branches locales précédés de deux espaces ou (pour la branche actuelle) d'un astérisque*
. Alors, exécutez ceci à travers quelque chose pour supprimer la*
version et il vous reste des noms de branche séparés par des espaces, que vous pouvez ensuite passer àgit branch -d
:ou:
Notez que les minuscules
-d
ne suppriment pas une branche "non entièrement fusionnée" (voir la documentation). L'utilisation-D
supprimera ces branches, même si cela entraîne la «perte» des commits; utilisez ceci avec beaucoup de précaution, car cela supprime également les reflogs de branche, de sorte que le truc habituel de "récupération après suppression accidentelle" ne fonctionne pas non plus.la source
git branch -D $(git branch | grep -v '^*')
cas si vous souhaitez supprimer les branches qui ont fusionné.Pour supprimer toutes les branches fusionnées (sauf la version actuelle
-v ‘*’
):aussi j'ai fait une telle commande pour le nettoyage complet du repo:
pris d' ici .
la source
Supprimez toutes les branches sauf une branche spécifique :
Supprimez toutes les branches locales à l'exception de develop et master
la source
Pour Windows, dans Powershell, utilisez:
la source
Supprimer toutes les branches fusionnées localement:
Supprimez toutes les branches sauf une branche spécifique :
Supprimez toutes les branches locales à l'exception de develop et master
la source
J'ai déjà créé cette construction pour mon environnement Windows. Cela aidera peut-être quelqu'un d'autre. Pendant l'exécution, la branche maître et actuelle ne sont pas supprimées . Toutes les autres branches fusionnées seront supprimées malgré tout.
la source
Pour supprimer toutes les branches à l'exception de la branche actuelle en une seule étape:
git branch | grep -v $(git rev-parse --abbrev-ref HEAD) | xargs git branch -D
la source
En supposant que
git branch
montre la branche actuelle préfixée par*
; En utilisant Powershell, la ligne suivante supprimera toutes les branches qui ne commencent pas par*
.git branch | ? { $_ -lt "*" } | % { git branch -D $_.Trim() }
?
= Où-Objet%
= Foreach-Objectla source
Je vois donc beaucoup de noms de branches codés en dur ici ... Et je pense que ma réponse ici est plus précise à la partie "branche actuelle" de la question tout en la gardant sur une seule ligne et lisible pour les débutants comme moi. Juste pour donner du crédit là où c'est dû, la réponse est plutôt évidemment basée sur la réponse de @ pankijs.
git branch | grep -v $(git branch --show-current) | xargs git branch -d
et je l'ai aliasée sur une ligne dans mon .bash_aliases dans debian aussi.
alias gitbclean='git branch | grep -v $(git branch --show-current) | xargs git branch -d'
(Bien que je pense que certaines fonctionnalités de bash doivent être activées pour que la sous-commande s'exécute sur certaines lignes de commande)
la source
J'utilise ceci parce que j'arrive à être plus sélectif dans ce que je ne veux pas supprimer. Cette commande ci-dessous supprime toutes les branches sauf master, develop et la branche actuelle.
Alors je mets ça dans mon
~/.zshrc
la source
À mon humble avis, le moyen le plus sûr de supprimer les succursales locales est:
En outre, plus d'informations liées à ce sujet, vous pouvez trouver Supprimer toutes les branches git locales
la source
gone
marqueur que vous devez utiliser-vv
(verbeux deux fois), mais-a
ne vous aidera pas (il répertorie également les branches distantes)