¿Cómo puedo eliminar una etiqueta remota?

Resuelto markdorison asked hace 13 años • 30 respuestas

¿Cómo puedo eliminar una etiqueta de Git que ya ha sido enviada?

markdorison avatar Mar 30 '11 06:03 markdorison
Aceptado

Puede enviar una referencia 'vacía' al nombre de la etiqueta remota:

git push origin :tagname

O, de manera más expresiva, use la --deleteopción (o -dsi su versión de git es anterior a 1.8.0):

git push --delete origin tagname

Tenga en cuenta que git tiene un espacio de nombres de etiqueta y un espacio de nombres de rama, por lo que puede usar el mismo nombre para una rama y para una etiqueta. Si desea asegurarse de que no pueda eliminar accidentalmente la rama en lugar de la etiqueta, puede especificar una referencia completa que nunca eliminará una rama:

git push origin :refs/tags/tagname

Si también necesita eliminar la etiqueta local, use:

git tag --delete tagname

Fondo

Enviar una rama, etiqueta u otra referencia a un repositorio remoto implica especificar "¿qué repositorio, qué fuente, qué destino?"

git push remote-repo source-ref:destination-ref

Un ejemplo del mundo real en el que empujas tu rama maestra a la rama maestra del origen es:

git push origin refs/heads/master:refs/heads/master

Debido a las rutas predeterminadas, se puede reducir a:

git push origin master:master

Las etiquetas funcionan de la misma manera:

git push origin refs/tags/release-1.0:refs/tags/release-1.0

Que también se puede abreviar a:

git push origin release-1.0:release-1.0

Al omitir la referencia de origen (la parte antes de los dos puntos), empuja "nada" al destino, eliminando la referencia en el extremo remoto.

Adam Franco avatar Mar 29 '2011 23:03 Adam Franco

Una forma más sencilla es

git push --delete origin YOUR_TAG_NAME

En mi opinión, la sintaxis de prefijo de dos puntos es un poco extraña en esta situación

quexer avatar Oct 09 '2012 00:10 quexer

Si tiene una etiqueta remota v0.1.0para eliminar y su control remoto es origin, simplemente:

git push origin :refs/tags/v0.1.0

Si también necesita eliminar la etiqueta localmente:

git tag -d v0.1.0

Consulte la respuesta de Adam Franco para obtener una explicación de :la sintaxis inusual de eliminación de Git.

Alex Dean avatar Jul 21 '2012 16:07 Alex Dean

Elimine todas las etiquetas locales y obtenga la lista de etiquetas remotas :

git tag -l | xargs git tag -d
git fetch

Eliminar todas las etiquetas remotas

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

Limpiar etiquetas locales

git tag -l | xargs git tag -d
Siddhartha Mukherjee avatar Apr 02 '2013 02:04 Siddhartha Mukherjee

git push --delete origin $TAGNAMEes el enfoque correcto (además de una eliminación local).

Pero: asegúrese de utilizar Git 2.31+ (primer trimestre de 2021).

" git push $there --delete" ( man ) debería haberse diagnosticado como un error, pero en su lugar se convirtió en un envío coincidente, que se corrigió con Git 2.31 (primer trimestre de 2021).

Véase el compromiso 20e4164 (23 de febrero de 2021) de Junio ​​C Hamano ( gitster) .
(Fusionado por Junio ​​C Hamano -- gitster-- en el compromiso 1400458 , 25 de febrero de 2021)

push: no te conviertas --delete ''en un empujón coincidente

Notado por: Tilman Vogel

Cuando agregamos un azúcar de sintaxis " git push remote --delete" ( man ) <ref> a " git push" ( man ) como sinónimo de la sintaxis canónica ( man ) : en f517f1f (" : ( man ) como azúcar sintáctico para :foo", 2009-12-30, Git v1.7.0-rc0 -- merge ), no tuvimos el cuidado suficiente para asegurarnos de que no esté vacío.git push remotebuiltin-pushadd --delete<ref>

Reescribir ciegamente " --delete <ref>" a " :<ref>" significa que una cadena vacía da <ref>como resultado refspec " :", que es la sintaxis para solicitar un push "coincidente" que no elimina nada.

Peor aún, si hubiera referencias coincidentes que se pudieran adelantar rápidamente, se habrían publicado prematuramente, incluso si el usuario siente que aún no está listo para ser expulsado, lo que sería un verdadero desastre.

VonC avatar Feb 28 '2021 01:02 VonC

Desde tu terminal, haz esto:

git fetch
git tag
git tag -d {tag-name}
git push origin :refs/tags/{tag-name}

Ahora ve a Github.com y actualiza, desaparecen.

Web_Designer avatar Jun 27 '2016 13:06 Web_Designer