Domanda Come eliminare un tag remoto Git?


Come si elimina un tag git che è già stato inserito?


2123
2018-03-29 23:41


origine


risposte:


Devi solo inserire un riferimento "vuoto" al nome del tag remoto:

git push origin :tagname

O, più espressivamente, usa il --delete opzione (o -d se la tua versione git è precedente alla 1.8.0):

git push --delete origin tagname

Se hai anche bisogno di cancellare il tag locale, usa:

git tag --delete tagname

sfondo

Se si spinge un ramo, un tag o un altro riferimento a un repository remoto, è necessario specificare "push dove, quale origine, quale destinazione?"

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

Un esempio del mondo reale in cui si spinge il ramo principale verso il ramo principale dell'origine è:

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

Quale, a causa dei percorsi predefiniti, può essere abbreviato in:

git push origin master:master

I tag funzionano allo stesso modo:

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

Che può anche essere abbreviato in:

git push origin release-1.0:release-1.0

Omettendo il ref sorgente (la parte prima dei due punti), si preme "nulla" sulla destinazione, eliminando il riferimento sul terminale remoto.


3498
2018-03-29 23:45



Un modo più semplice è

git push --delete origin YOUR_TAG_NAME

La sintassi del colon con prefisso IMO è un po 'strana in questa situazione


243
2017-10-09 00:47



Se hai un tag remoto v0.1.0 per eliminare, e il tuo telecomando è origin, quindi semplicemente:

git push origin :refs/tags/v0.1.0

Se devi anche eliminare il tag localmente:

git tag -d v0.1.0

Vedere Adam FrancoLa risposta per una spiegazione dell'unicità di Git : sintassi per la cancellazione.


133
2017-07-21 16:14



Elimina tutti i tag locali e ottieni l'elenco dei tag remoti:

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

Rimuovi tutti i tag remoti

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

Pulisci i tag locali

git tag -l | xargs git tag -d

72
2018-04-02 02:26



Per rimuovere il tag dal repository remoto:

git push --delete origin TAGNAME

Potresti anche voler eliminare il tag localmente:

git tag -d TAGNAME

26
2017-09-04 10:30



Dal tuo terminale, fai questo:

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

Ora vai su Github.com e aggiorna, scompaiono.


17
2018-06-27 13:23



Basta notare che, se si ha un ramo remoto chiamato come tag remoto, questi comandi sono ambigui:

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

Quindi devi usare questo comando per cancellare il tag:

git push origin :refs/tags/<tag>

e questo per eliminare il ramo:

git push origin :refs/heads/<branch>

In caso contrario, si otterrebbe un errore come questo:

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

12
2018-05-05 17:28



Se hai creato un tag chiamato release01 in un repository Git lo rimuoveresti dal tuo repository procedendo come segue:

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

Per rimuoverne uno da un repository Mercurial:

hg tag --remove featurefoo

Si prega di riferimento https://confluence.atlassian.com/pages/viewpage.action?pageId=282175551


8
2017-11-11 05:54



Elimina il tag locale "12345"

git tag -d 12345

Elimina il tag remoto "12345" (ad esempio, anche la versione GitHub)

git push origin :refs/tags/12345

approccio alternativo

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

enter image description here


5
2018-03-23 09:50



Le altre risposte indicano come ottenere ciò, ma è necessario tenere presente le conseguenze poiché questo è un repository remoto.

La pagina man di git tag, nel On Retagging sezione, ha una buona spiegazione di come informare cortesemente gli altri utenti del repository remoto del cambiamento. Danno anche un utile modello di annuncio per comunicare in che modo gli altri dovrebbero ottenere le tue modifiche.


4
2018-03-04 17:04



Metodo fino a 100 volte più veloce per migliaia di tag remoti

Dopo aver letto queste risposte e aver bisogno di eliminare oltre 11000 tag, ho imparato questi metodi basandosi o xargs prenditi troppo tempo, a meno che tu non abbia ore da bruciare.

Lottando, ho trovato due tanto modi più veloci. Per entrambi, inizia con git tago git ls-remote --tags per creare un elenco di tag che si desidera eliminare sul telecomando. Negli esempi seguenti è possibile omettere o sostituire sorting_proccessing_etc con qualsiasi grepING, sortING, tailing o headche vuoi (per esempio.  grep -P "my_regex" | sort | head -n -200  eccetera):


Questo primo metodo è di gran lunga il più veloce, forse Da 20 a 100 volte più veloce dell'uso xargse funziona con almeno alcuni mille tag alla volta.

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

Come funziona? Il normale elenco di tag separati da linee viene convertito in una singola riga di tag separati dallo spazio, ognuno dei quali è preceduto da : così . . .

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

utilizzando git push con questo tag di formato spinge Niente in ogni ref remoto, cancellandolo (il formato normale per spingere in questo modo è local_ref_path:remote_ref_path).

Il metodo due è suddiviso come risposta separata altrove su questa stessa pagina


Dopo entrambi questi metodi, probabilmente vorrai eliminare anche i tuoi tag locali. Questo è molto più veloce, quindi possiamo tornare a utilizzare xargs e git tag -d, che è sufficiente.

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

O simile all'eliminazione remota:

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

4
2018-04-15 02:30