Pregunta ¿Cómo eliminar una etiqueta remota de git?


¿Cómo se borra una etiqueta de git que ya se ha enviado?


2123
2018-03-29 23:41


origen


Respuestas:


Solo necesita presionar una referencia 'vacía' al nombre de la etiqueta remota:

git push origin :tagname

O, más expresivamente, use el --delete opción (o -d si su versión de git es anterior a 1.8.0):

git push --delete origin tagname

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

git tag --delete tagname

Fondo

Presionar una rama, etiqueta u otra referencia a un repositorio remoto implica especificar "¿dónde, qué origen, qué destino?"

git push where-to-push source-ref:destination-ref

Un ejemplo del mundo real donde empuja su rama principal a la rama principal 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), presiona "nada" hacia el destino, eliminando la referencia en el extremo remoto.


3499
2018-03-29 23:45



Una forma más directa es

git push --delete origin YOUR_TAG_NAME

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


243
2017-10-09 00:47



Si tienes una etiqueta remota v0.1.0 para eliminar, y su control remoto es origin, entonces 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 para una explicación de lo inusual de Git : sintaxis para su eliminación


133
2017-07-21 16:14



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 las etiquetas locales

git tag -l | xargs git tag -d

72
2018-04-02 02:26



Para eliminar la etiqueta del repositorio remoto:

git push --delete origin TAGNAME

Es posible que también desee eliminar la etiqueta localmente:

git tag -d TAGNAME

26
2017-09-04 10:30



Desde tu terminal, haz esto:

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

Ahora ve a Github.com y actualiza, desaparecen.


17
2018-06-27 13:23



Solo tenga en cuenta que, si tiene una rama remota nombrada como una etiqueta remota, estos comandos son ambiguos:

git push origin :tagname
git push --delete origin tagname

Entonces debes usar este comando para eliminar la etiqueta:

git push origin :refs/tags/<tag>

y este para eliminar la rama:

git push origin :refs/heads/<branch>

Si no, obtendrías un error como este:

error: dst refspec <tagname> matches more than one.
error: failed to push some refs to '<repo>'

12
2018-05-05 17:28



Si ha creado una etiqueta llamada release01 en un repositorio de Git lo eliminarías de tu repositorio haciendo lo siguiente:

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

Para eliminar uno de un repositorio de Mercurial:

hg tag --remove featurefoo

Por favor consulte https://confluence.atlassian.com/pages/viewpage.action?pageId=282175551


8
2017-11-11 05:54



Eliminar la etiqueta local '12345'

git tag -d 12345

Eliminar la etiqueta remota '12345' (por ejemplo, la versión de GitHub también)

git push origin :refs/tags/12345

Enfoque alternativo

git push --delete origin tagName
git tag -d tagName

enter image description here


5
2018-03-23 09:50



Las otras respuestas señalan cómo lograr esto, pero debe tener en cuenta las consecuencias ya que este es un repositorio remoto.

La página man de git tag, en En reetiquetado sección, tiene una buena explicación de cómo informar cortésmente a los otros usuarios remotos del cambio. Incluso brindan una plantilla de anuncio útil para comunicar cómo otros deben obtener sus cambios.


4
2018-03-04 17:04



Método hasta 100 veces más rápido para miles de etiquetas remotas

Después de leer estas respuestas mientras necesitaba borrar más de 11,000 etiquetas, aprendí estos métodos confiando o xargs tome demasiado tiempo, a menos que tenga horas para quemar.

Luchando, encontré dos mucho formas más rápidas. Para ambos, comience con git tago git ls-remote --tags para hacer una lista de las etiquetas que desea eliminar en el control remoto. En los ejemplos a continuación, puede omitir o reemplazar sorting_proccessing_etc con cualquier grepEn g, sortEn g, tailing o headque quieras (p.ej.  grep -P "my_regex" | sort | head -n -200  etc)


Este primer método es, con mucho, el más rápido, tal vez 20 a 100 veces más rápido que usar xargs, y funciona con al menos varios mil etiquetas a la vez

git push origin $(< git tag | sorting_processing_etc \
| sed -e 's/^/:/' | paste -sd " ") #note exclude "<" for zsh

¿Como funciona esto? La lista normal de etiquetas separadas por líneas se convierte en una sola línea de etiquetas separadas por espacios, cada una precedida de : asi que . . .

tag1   becomes
tag2   ======>  :tag1 :tag2 :tag3
tag3

Utilizando git push con esta etiqueta de formato empuja nada en cada ref remoto, borrándolo (el formato normal para empujar de esta manera es local_ref_path:remote_ref_path)

El método dos se divide en una respuesta separada en otro lugar en esta misma página


Después de ambos métodos, probablemente también quieras eliminar tus etiquetas locales. Esto es mucho más rápido, así que podemos volver a usar xargs y git tag -dque es suficiente

git tag | sorting_processing_etc | xargs -L 1 git tag -d

O similar a la eliminación remota:

git tag -d $(< git tag | sorting_processing_etc | paste -sd " ")

4
2018-04-15 02:30