1831 votes

Comment puis-je supprimer toutes les branches git qui ont été fusionnées?

J'ai beaucoup de branches git. Comment puis-je supprimer les branches qui ont déjà été fusionnées? Est-il un moyen facile de supprimer tous au lieu de les supprimer un par un?

2948voto

Adam Dymitruk Points 34999

Mise à JOUR:

Pour supprimer toutes les branches qui sont déjà fusionné dans l'extrait de la branche:

git branch --merged | grep -v "\*" | xargs -n 1 git branch -d

Vous pouvez supprimer une fusion de la branche locale avec:

git branch -d branchname

Si ce n'est pas fusionné, utilisez:

git branch -D branchname

Pour le supprimer de la distance dans les anciennes versions de Git utilisation:

git push origin :branchname

Dans les versions plus récentes de Git utilisation:

git push --delete origin branchname

Une fois que vous supprimez la branche à partir de la télécommande, vous pouvez le tailler pour se débarrasser de suivi à distance des branches avec:

git remote prune origin

taille individuelle de suivi à distance des branches, comme l'autre réponse suggère, avec:

git branch -dr branchname

Espérons que cette aide.

435voto

kuboon Points 1033

Pour supprimer toutes les branches de la télécommande qui sont déjà fusionné:

git branch -r --merged | grep -v master | sed 's/origin\//:/' | xargs -n 1 git push origin

Dans les versions plus récentes de Git

git branch -r --merged | grep -v master | sed 's/origin\///' | xargs -n 1 git push --delete origin

179voto

real_ate Points 581

Juste s'étendant Adam répondre un peu:

Ajoutez ceci à votre git config en exécutant git config -e --global

[alias]
    cleanup = "!git branch --merged | grep  -v '\\*\\|master\\|develop' | xargs -n 1 git branch -d"

et puis vous pouvez supprimer tous les locaux fusionné les branches faisant un simple git cleanup

82voto

Ismael Abreu Points 9377

Cela fonctionne aussi pour supprimer toutes fusionnées et des branches à l'exception de master.

git branch --merged | grep -v '^* master$' | grep -v '^  master$' | xargs git branch -d

76voto

Guido Bouman Points 191

Vous voulez exclure l' master & develop branches de ces commandes.

Git Local clair:
git branch --merged | grep -v '\*\|master\|develop' | xargs -n 1 git branch -d

Distant git clair:
git branch -r --merged | grep -v '\*\|master\|develop' | sed 's/origin\///' | xargs -n 1 git push --delete origin

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X