¿Cómo puedo eliminar una etiqueta remota?
¿Cómo puedo eliminar una etiqueta de Git que ya ha sido enviada?
Puede enviar una referencia 'vacía' al nombre de la etiqueta remota:
git push origin :tagname
O, de manera más expresiva, use la --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 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.
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
Si tiene una etiqueta remota v0.1.0
para 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.
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
git push --delete origin $TAGNAME
es 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 coincidenteNotado 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 remote
builtin-push
add
--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.
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.