Jak usunąć tag Git, który został już wypchnięty?
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
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.
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.