Jak usunąć tag zdalny?

Jak usunąć tag Git, który został już wypchnięty?

Rozwiązanie

Wystarczy, że wepchniesz 'puste' odniesienie do nazwy zdalnego tagu:

git push origin :tagname

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

git push --delete origin tagname

Zauważ, że git ma przestrzeń nazw tagów i przestrzeń nazw gałęzi, więc możesz użyć tej samej nazwy dla gałęzi i dla tagu. Jeśli chcesz się upewnić, że nie możesz przypadkowo usunąć gałęzi zamiast tagu, możesz określić pełne ref, które nigdy nie usunie gałęzi:

git push origin :refs/tags/tagname

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

git tag --delete tagname

Tło

Pchanie gałęzi, tagu, lub innego ref do zdalnego repozytorium wymaga określenia "jakie repo, jakie źródło, jakie miejsce docelowe?"

git push remote-repo source-ref:destination-ref

Przykładem z prawdziwego świata, w którym popychasz swoją główną gałąź do gałęzi głównej pochodzenia'jest:

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

Który z powodu domyślnych ścieżek, może być skrócony do:

git push origin master:master

Znaczniki 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 ref źródłowy (część przed dwukropkiem), pchasz 'nic' do miejsca docelowego, usuwając ref na zdalnym końcu.

Komentarze (9)

Bardziej prostym sposobem jest

git push --delete origin YOUR_TAG_NAME

IMO składnia przedrostka dwukropka jest trochę dziwna w tej sytuacji

Komentarze (5)

Jeśli masz zdalny tag v0.1.0 do usunięcia, a twój zdalny jest origin, to po prostu:

git push origin :refs/tags/v0.1.0

Jeśli musisz również usunąć tag lokalnie:

git tag -d v0.1.0

Zobacz Adam Franco's answer dla wyjaśnienia Git's unusual : syntax for deletion.

Komentarze (5)