¿Cómo puedo eliminar una etiqueta remota?

7 minutos de lectura

avatar de usuario de markdorison
marcadorison

¿Cómo puedo eliminar una etiqueta de Git que ya se envió?

Avatar de usuario de Adam Franco
adam franco

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

git push origin :tagname

O, más expresivamente, utilice el --delete opción (o -d si 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 nombre de etiqueta y un espacio de nombre de rama, por lo que puede usar el mismo nombre para una rama y para una etiqueta. Si desea asegurarse de que no puede eliminar accidentalmente la rama en lugar de la etiqueta, puede especificar la referencia completa que nunca eliminará una rama:

git push origin :refs/tags/tagname

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

git tag --delete tagname

Fondo

Empujar 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 empuja su rama maestra a la rama maestra del origen es:

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

Que debido a las rutas predeterminadas, se puede acortar 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 acortar 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.

  • +1 por responder la pregunta y explicar el caso general, y detallar el significado de la sintaxis completa

    – Pedro Anfitrión

    14/09/2012 a las 19:03


  • Y en caso de que alguien se pregunte cómo eliminar varias etiquetas a la vez, simplemente enumérelas usando un espacio en blanco, por ejemplo git push --delete origin tag1 tag2. Lo mismo es válido para la eliminación de etiquetas locales git tag -d tag1 tag2

    – Dmitri

    28 de mayo de 2014 a las 0:54

  • Si el nombre de la etiqueta coincide con el nombre de una sucursal, es posible que termine eliminando su sucursal. Ja ja. Ver la segunda respuesta – es más ecológico

    – zuba

    26 de diciembre de 2016 a las 9:56


  • También es interesante saber que git tag -d `git tag` eliminará todas las etiquetas locales. Lo mismo se aplica para git push --delete origin `git tag` asumiendo que sacó las etiquetas remotas localmente. Eso fue útil en un entorno de prueba.

    – DarkFranX

    31 de julio de 2018 a las 15:15

  • El hecho de que tengamos más de 6700 votos a favor y que sea tan complicado probablemente signifique que podría rediseñarse.

    – LMS5400

    31 de agosto de 2021 a las 21:31


avatar de usuario de quexer
quexer

Una forma más directa es

git push --delete origin YOUR_TAG_NAME

La sintaxis de dos puntos de prefijo de la OMI es un poco extraña en esta situación

  • Creo que esta es la forma correcta… otras sintaxis me parecen más trucos.

    – Luigi R. Viggiano

    24 de diciembre de 2012 a las 17:45

  • Esto funciona. Una adición: si tiene una sucursal y una etiqueta con el mismo nombre, puede poner la palabra tag antes del nombre de su etiqueta para asegurarse de obtener la etiqueta, no la rama.

    – andypaxo

    27 de marzo de 2013 a las 20:08

  • @andypaxo Lo que toma el comando es refspecs, la forma correcta sería prefijar las etiquetas con refs/tags/como esto: refs/tags/v2.3.1.

    – p3lim

    13 de marzo de 2015 a las 5:04

  • Tenía un nombre de etiqueta ‘malo’ creado en el servidor remoto de alguna manera, que tenía caracteres especiales, por lo que no puedo sincronizar con eso, así que simplemente eliminé eso con su sugerencia: git push –delete origin “service–

    — 151″, no se puede eliminar ni con intellij, ni con stash, ni con sourceTree. Gracias !
    – Dmitri Algazín
    12 de abril de 2019 a las 14:54
  • Para aquellos que leyeron esto mucho después de que se publicó la respuesta, en ese momento, la respuesta (ahora aceptada) no tenía este contenido; más tarde, el contenido de esta respuesta fue (muy estrictamente) sugerido editado en el aceptado. Este es uno de esos extraños casos extremos en los que “la mejor respuesta sube al sistema superior” de Stack Overflow falla un poco, por un lado, estoy feliz de que la respuesta aceptada tenga la información correcta porque la mayoría de los lectores no mirarán más allá de la respuesta superior, pero no estoy entusiasmado con la forma en que llegamos aquí… Espero que los futuros lectores no piensen que esta respuesta es solo copiar/pegar.
    – jrh
    5 de marzo de 2020 a las 16:17

Avatar de usuario de Alex Dean
alex decano

Si tiene una etiqueta remota v0.1.0 para borrar, y su control remoto está originentonces simplemente:

git push origin :refs/tags/v0.1.0

Si también necesita eliminar la etiqueta localmente:

git tag -d v0.1.0

Ver adam francoLa respuesta de Git para una explicación del inusual : sintaxis para la eliminación.

  • esto también funciona con jgit. la abreviatura :tag no funciona con jgit

    – rynop

    27/09/2012 a las 19:50

  • Obtuve fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1 …?

    – Chaim Eliyah

    13 de septiembre de 2016 a las 23:17

  • @ChaimEliyah tienes una barra inclinada, tal vez ese sea tu problema

    – Joffrey

    31/10/2016 a las 22:21

  • Mejor respuesta, ya que esto también funciona si tiene una rama y una etiqueta que se llama igual.

    – Erik A. Brandstadmoen

    5 de febrero de 2018 a las 8:25

  • Sólo :tagname debería funcionar para la eliminación remota.

    – Asclepio

    5 de febrero de 2019 a las 21:32

Avatar de usuario de Siddhartha Mukherjee
Siddhartha Mukherjee

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

Avatar de usuario de Mahmoud Zalt
mahmud zalt

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.

git tag -d your_tag_name
git push origin :refs/tags/your_tag_name

La primera línea elimina your_tag_name de local repo y eliminaciones de segunda línea your_tag_name de remoto repositorio

Para aquellos que usan GitHub, se necesita un paso más: descartando borrador.
ingrese la descripción de la imagen aquí

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

Pero: asegúrese de usar Git 2.31+ (Q1 2021).

git push $there --delete(hombre) debería haberse diagnosticado como un error, pero en su lugar se convirtió en una inserción coincidente, que se ha corregido con Git 2.31 (Q1 2021).

Ver cometer 20e4164 (23 feb 2021) por Junio ​​C Hamano (gitster).
(Combinado por Junio ​​C Hamano — gitster en cometer 140045825 de febrero de 2021)

push: no des la vuelta --delete '' en un empujón coincidente

Notado por: Tilman Vogel

Cuando añadimos un azúcar de sintaxis “git push remote --delete(hombre) <ref> a “git push(hombre) como sinónimo de canónico git push remote(hombre) : sintaxis en f517f1f (“builtin-push: add(hombre) --delete como azúcar sintáctico para :foo”, 2009-12-30, Git v1.7.0-rc0 — unir), no fuimos lo suficientemente cuidadosos para asegurarnos de que <ref> no está vacío.

Reescribiendo a ciegas”--delete <ref>” a “:<ref>” significa que una cadena vacía <ref> da como resultado refspec “:“, que es la sintaxis para solicitar un empuje de “coincidencia” que no elimine nada.

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

  • ¡funciona! Maldita sea, ¿por qué no ponen esta opción en github en los lanzamientos? Estaba haciendo una actualización de la misma etiqueta con cremalleras mayores. Me tomó un tiempo darme cuenta de que la fecha no estaba bien. y luego hice varios intentos, hasta que vi esta página.

    – Inconsciencia UneSource

    13 oct a las 12:28


¿Ha sido útil esta solución?