79 votos

Puede eliminar múltiples ramas en un comando Git?

Me gustaría limpiar mi repositorio local que tiene un montón de ramas viejas, digamos 3.2, 3.2.1, 3.2.2, etc.

Estaba esperando una manera disimulada de eliminar un montón de ellos a la vez y, ya que en su mayoría siguen un punto de liberación de la convención, pensé que tal vez había un acceso directo para decir:

git branch-D 3.2.*

y matar a todos los 3.2.x las ramas

Traté de ese comando y, por supuesto, no funciona... :(

91voto

slebetman Puntos 28276

No con la sintaxis. Pero usted puede hacer esto de esta manera:

git branch -D 3.2 3.2.1 3.2.2

Básicamente, git branch eliminar múltiples sucursales para que con una sola invocación. Por desgracia no es de rama de la terminación de los nombres. Aunque, en bash, se puede hacer:

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

66voto

gawi Puntos 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

EDITAR:

Una versión más segura (sugerido por James Narębski y Jefromi), como git branch de salida no está destinado a ser utilizado en las secuencias de comandos:

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

... o el xargs-libre:

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

43voto

Carl Norum Puntos 114072

Así, en el peor de los casos, puedes usar:

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

13voto

Jakub Narębski Puntos 87537

Uso

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

0voto

Manoj Govindan Puntos 24030

Que yo sepa git branch ¿ no permiten eliminar las múltiples ramas.

Alternativamente, si sus ramas se denominan de manera uniforme puede escribir un pequeño (shell) secuencia de comandos para eliminar las ramas de una en una.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X