Eliminar todas las tags de un repository de Git

Quiero eliminar todas las tags de un repository de Git. ¿Cómo puedo hacer eso?

Usando la git tag -d tagname borre la label tagname localmente, y usando git push --tags Actualizo las tags en el proveedor de git.

Lo intenté:

 git tag -d * 

Pero veo que * refiere a los files del directory actual.

 $ git tag -d * error: tag 'file1' not found. error: tag 'file2' not found. ... 

Considere que tengo muchas tags, y quiero eliminarlas, todas.

 git tag | xargs git tag -d 

Simplemente usa la filosofía de Linux donde canalizas todo.

Para eliminar tags remotas (antes de eliminar tags locales) simplemente hazlo:

 git tag -l | xargs -n 1 git push --delete origin 

y luego borre las copys locales:

 git tag | xargs git tag -d 

Nota: Agregó esta respuesta para futuros googlers.

Puede ser más eficiente presionar eliminar todas las tags en un command. Especialmente si tienes varios cientos.

En un shell adecuado que no sea Windows, elimine todas las tags remotas:

 git tag | xargs -L 1 | xargs git push origin --delete 

A continuación, elimine todas las tags locales:

 git tag | xargs -L 1 | xargs git tag --delete 

Esto debería estar bien siempre y cuando no tenga un ' en sus nombres de label. Para eso, los siguientes commands deberían estar bien.

 git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git push origin --delete git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git tag --delete 

Otras forms de tomar una list de líneas, envolverlas entre comillas, hacerlas una sola línea y luego pasar esa línea a un command probablemente existan. Teniendo en count que este es el mejor entorno para desollar gatos y todo.

Para usuarios de Windows que usan PowerShell:

 git tag | foreach-object -process { git tag -d $_ } 

Esto elimina todas las tags devueltas por la git tag git tag -d ejecutando la git tag -d para cada línea devuelta.

Añadiendo a la respuesta de Stefan que faltaba cómo eliminar tags desde el control remoto. Para Windows PowerShell, puede ejecutar esto para eliminar primero las tags remotas, seguidas de las tags locales.

 git tag | foreach-object -process { git push origin --delete $_ } git tag | foreach-object -process { git tag -d $_ } 

Para usuarios de Windows:

Esto elimina todas las tags locales ejecutando la label git y alimentando esa list a la label git -d:

 FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a 

(Se encuentra en: https://gist.github.com/RandomArray/fdaa427878952d9768b0 )

También puedes usar:

 git tag -d $(git tag) 

Si no tiene las tags en su repository local, puede eliminar las tags remotas sin tener que llevarlas a su repository local.

 git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete 

No se olvide de replace "origen" al nombre de su controller remoto.