Pytanie Jak usunąć zdalny tag git?


Jak usunąć tag git, który został już wciśnięty?


2135
2018-03-29 23:41


pochodzenie




Odpowiedzi:


Wystarczy nacisnąć pustą referencję do nazwy zdalnego znacznika:

git push origin :tagname

Lub, bardziej wyraziście, użyj --delete opcja (lub -d jeśli twoja wersja git jest starsza niż 1.8.0):

git push --delete origin tagname

Jeśli musisz również usunąć tag lokalny, użyj:

git tag --delete tagname

tło

Przesyłanie gałęzi, tagu lub innego dokumentu ref do zdalnego repozytorium wymaga określenia "push where, what source, what destination?"

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

Przykładem rzeczywistego świata, w którym przenosisz swój główny oddział do głównego oddziału źródłowego, jest:

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

Które ze względu na domyślne ścieżki można skrócić do:

git push origin master:master

Tagi działają w ten sam sposób:

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

Które można również skrócić do:

git push origin release-1.0:release-1.0

Pomijając źródło ref (część przed dwukropkiem), wciskasz "nic" do miejsca docelowego, usuwając ref na zdalnym końcu.


3520
2018-03-29 23:45



Dobrze. A tak przy okazji, to również działa na gałęzie. - Joost Diepenmaat
+1 zarówno za udzielenie odpowiedzi na pytanie, jak i wyjaśnienie ogólnego przypadku oraz określenie pełnego znaczenia składni - Peter Host
I na wypadek, gdyby ktoś zastanawiał się, jak usunąć wiele tagów naraz, możesz je wypisać na liście za pomocą spacji, np. git push --delete origin tag1 tag2. To samo dotyczy usuwania tagów lokalnych git tag -d tag1 tag2 - dVaffection
Jeśli nazwa tagu koliduje z nazwą oddziału, może skończyć się usunięciem oddziału. Ha ha. Zobacz drugą odpowiedź - jest bardziej ekologiczna - zuba
@ DVaffection Chciałbym przeczytać twój komentarz przed usuwanie 12 tagów oddzielnie ... - BadHorsie


Bardziej prostym sposobem jest

git push --delete origin YOUR_TAG_NAME

Składnia prefiksowa dwukropka IMO jest nieco dziwna w tej sytuacji


246
2017-10-09 00:47



Myślę, że to jest właściwy sposób ... inna składnia bardziej przypomina mi hacki. - Luigi R. Viggiano
Tak, to jest proste i działa. Chociaż chciałbym wyjaśnić odpowiedź, określając, co jest częścią zmienną: git push --delete origin "TAGNAME", gdzie TAGNAME jest nazwą oryginalnego tagu. - Teemu Leisti
To działa. Jedno dodanie: jeśli masz gałąź i znacznik o tej samej nazwie, możesz umieścić słowo tagprzed nazwą tagu, aby upewnić się, że otrzymasz tag, a nie gałąź. - andypaxo
@andypaxo To, co polecenie wykonuje, to refspecs, prawidłowym sposobem jest poprzedzanie tagów refs/tags/, lubię to: refs/tags/v2.3.1. - p3lim


Jeśli masz zdalny tag v0.1.0 usunąć, a pilot jest origin, a następnie po prostu:

git push origin :refs/tags/v0.1.0

Jeśli musisz też usunąć tag lokalnie:

git tag -d v0.1.0

Widzieć Adam Francoodpowiedź dla wyjaśnienia niezwykłego Gita : składnia do usunięcia.


134
2017-07-21 16:14



to również działa z jgit. Skrót znacznika: nie działa z jgit - rynop
mam fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1 ...? - Chaim Eliyah
@ChaimEliyah masz wiodący slash, może to twój problem - Joffrey
Lepsza odpowiedź, ponieważ działa to również, jeśli masz gałąź i znacznik, który nazywa się tak samo. - Erik A. Brandstadmoen


Usuń wszystkie tagi lokalne i uzyskaj listę zdalnych tagów:

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

Usuń wszystkie zdalne znaczniki

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

Oczyść tagi lokalne

git tag -l | xargs git tag -d

72
2018-04-02 02:26



Jak usunąć wszystkie tagi z repozytoriów lokalnych i zdalnych. Tego właśnie szukałem, dzięki! - Jorge Orpinel
git fetch, usuń zdalne, a następnie oczyść mieszkańców, przepracuj się pięknie! - DiegoRBaquero
powolny, ale najprostszy - Lucent Fox


Aby usunąć znacznik ze zdalnego repozytorium:

git push --delete origin TAGNAME

Możesz również usunąć tag lokalnie:

git tag -d TAGNAME

26
2017-09-04 10:30





Z poziomu terminala wykonaj następujące czynności:

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

Teraz idź do Github.com i odśwież, znikają.


17
2018-06-27 13:23



git tag nie znaczniki - DSF


Zauważ, że jeśli masz zdalny oddział nazwany jako zdalny tag, polecenia te są niejednoznaczne:

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

Musisz więc użyć tego polecenia, aby usunąć znacznik:

git push origin :refs/tags/<tag>

i ten, aby usunąć gałąź:

git push origin :refs/heads/<branch>

Jeśli nie, otrzymasz komunikat o błędzie:

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

12
2018-05-05 17:28



Krótki i zwięzły. Ten post wraz z MeganZhou pojawił się jako odpowiedź na pytanie, dlaczego mamy problemy, nazwa gałęzi i nazwa są identyczne. Usunąłem tag lokalny i przekazałem do: refs / tags i wszystko było w porządku. - rwheadon


Jeśli utworzyłeś tag o nazwie release01 w repozytorium Git możesz usunąć go ze swojego repozytorium, wykonując następujące czynności:

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

Aby usunąć jeden z repozytorium Mercurial:

hg tag --remove featurefoo

Proszę odwołać się https://confluence.atlassian.com/pages/viewpage.action?pageId=282175551


8
2017-11-11 05:54