541 votes

Pouvez-vous supprimer plusieurs branches en une seule commande avec Git?

J'aimerais nettoyer mon référentiel local qui contient une tonne d'anciennes branches, par exemple 3.2, 3.2.1, 3.2.2, etc.

J'espérais trouver un moyen sournois d'en supprimer plusieurs à la fois et, comme ils suivent généralement une convention de libération de points, j'ai pensé qu'il y avait peut-être un raccourci pour dire:

branche git -D 3.2. *

et tuer toutes les branches 3.2.x

J'ai essayé cette commande et cela n'a bien sûr pas fonctionné ... :(

493voto

slebetman Points 28276

Pas avec cette syntaxe. Mais vous pouvez le faire comme ceci:

 git branch -D 3.2 3.2.1 3.2.2
 

Fondamentalement, git branch supprimera plusieurs branches pour vous avec un seul appel. Malheureusement, il ne termine pas le nom de la branche. Bien que, dans bash, vous pouvez faire:

 git branch -D `git branch | grep -E '^3\.2\..*'`
 

207voto

Carl Norum Points 114072

Eh bien, dans le pire des cas, vous pourriez utiliser:

 git branch | grep '3\.2' | xargs git branch -d
 

159voto

gawi Points 5073
 git branch  | cut -c3- | egrep "^3.2" | xargs git branch -D
  ^                ^                ^         ^ 
  |                |                |         |--- create arguments
  |                |                |              from standard input
  |                |                |
  |                |                |---your regexp 
  |                |
  |                |--- skip asterisk 
  |--- list all 
       local
       branches
 

MODIFIER:

Une version plus sûre (suggérée par Jakub Narębski et Jefromi), car la sortie de git branch n'est pas destinée à être utilisée dans les scripts:

 git for-each-ref --format="%(refname:short)" refs/heads/3.2\* | xargs git branch -D
 

... ou le xargs-free:

 git branch -D `git for-each-ref --format="%(refname:short)" refs/heads/3.2\*`
 

33voto

Jakub Narębski Points 87537

Utilisation

 git for-each-ref --format='%(refname:short)' 'refs/heads/3.2.*' |
   xargs git branch -D
 

0voto

Manoj Govindan Points 24030

Pour autant que je sais branche git ne vous permet pas de supprimer plusieurs branches.

Alternativement, si vos branches sont nommées de manière uniforme, vous pouvez écrire un petit script (shell) pour supprimer les branches une à la fois.

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