Питання Як видалити віддалений тег git?


Як видалити тег git, який вже був натиснутий?


2135
2018-03-29 23:41


походження




Відповіді:


Вам просто потрібно натиснути "порожнє" посилання на ім'я віддаленої теги:

git push origin :tagname

Або, більш виразно, використовуйте --delete варіант (або -d якщо ваша версія git старша за 1.8.0):

git push --delete origin tagname

Якщо вам також потрібно видалити місцевий тег, скористайтеся:

git tag --delete tagname

Передумови

Натискання гілки, тегів або іншого посилання на віддалений сховище передбачає вказування "натисніть де, яке джерело, який пункт призначення?"

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

Приклад реального світу, в якому ви натискаєте свою гілку на головну гілку походження, є:

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

Які через шляхи за замовчуванням можна скоротити до:

git push origin master:master

Теги працюють однаково:

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

Котрий також можна скоротити до:

git push origin release-1.0:release-1.0

Опустивши джерело ref (частина перед товстою кишкою), ви натискаєте "нічого" на ціль, видаляючи посилання на віддаленому кінці.


3520
2018-03-29 23:45



Правильно І, до речі, це теж працює для філій. - Joost Diepenmaat
+1 для відповіді на запитання та пояснення загального випадку, а також докладний опис значення незнищеного синтаксису - Peter Host
І на всяк випадок, хтось запитає, як видалити кілька тегів за один раз, просто перелічіть їх, використовуючи пробіли, наприклад. git push --delete origin tag1 tag2. Те саме стосується видалення локальних тегів git tag -d tag1 tag2 - dVaffection
Якщо ім'я тегу зіткнеться з назвою гілки, ви можете видалити його філію. Ха-ха. Подивіться на другу відповідь - це більш екологічно - zuba
@dVaffection Я хотів би прочитати ваш коментар раніше видалити 12 тегів окремо ... - BadHorsie


Більш простий спосіб - це

git push --delete origin YOUR_TAG_NAME

Синтаксис префіксації ІМО товстої кишки є трохи дивним у цій ситуації


246
2017-10-09 00:47



Я думаю, що це належний спосіб ... інший синтаксис виглядає більше як хаки для мене. - Luigi R. Viggiano
Так, це просто і працює. Хоча я б уточнив відповідь, вказавши, що таке змінна частина: git push --delete origin "TAGNAME", де TAGNAME - це назва оригінального тегу. - Teemu Leisti
Це працює Одне додавання: якщо у вас є філія та тег з однаковим ім'ям, ви можете помістити слово tag перед назвою тегу, щоб переконатися, що ви отримали тег, а не гілку. - andypaxo
@andypaxo Те, що команда приймає, є refspecs, правильним способом буде префіксація тегів з refs/tags/, подобається це: refs/tags/v2.3.1. - p3lim


Якщо у вас є віддалений тег v0.1.0 видалити, і ваш пульт дистанційного керування origin, то просто:

git push origin :refs/tags/v0.1.0

Якщо вам також потрібно видалити мітку локально:

git tag -d v0.1.0

Побачити Адам Франкоросійська відповідь для пояснення незвичайного Гіта : синтаксис для видалення


134
2017-07-21 16:14



це також працює з jgit. : стенограма тегів не працює з jgit - rynop
я зрозумів, я отримав fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1 ...? - Chaim Eliyah
@ChaimEliyah у вас є коса риска, може бути, це ваша проблема - Joffrey
Краща відповідь, оскільки це також працює, якщо у вас є гілка і тег, який називається тим самим. - Erik A. Brandstadmoen


Видалити всі локальні теги і отримати список віддалених тегів:

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

Видалити всі віддалені теги

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

Очистити місцеві теги

git tag -l | xargs git tag -d

72
2018-04-02 02:26



Як видалити всі теги з локального та віддаленого репо. Це те, що я шукав, спасибі! - Jorge Orpinel
git get, видалити віддалене, а потім очистити місцевих жителів, чудово працював! - DiegoRBaquero
повільний, але найпростіший - Lucent Fox


Щоб видалити тег із віддаленого сховища:

git push --delete origin TAGNAME

Можливо, ви також хочете видалити тег локально:

git tag -d TAGNAME

26
2017-09-04 10:30





З вашого терміналу виконайте наступні дії:

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

Тепер перейдіть до Github.com і оновлюйте, вони зникають.


17
2018-06-27 13:23



git тег не теги - DSF


Просто зверніть увагу, що якщо у вас є віддалена гілка, названа як віддалений тег, ці команди неоднозначні:

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

Отже, ви повинні використовувати цю команду, щоб видалити тег:

git push origin :refs/tags/<tag>

і цей, щоб видалити гілку:

git push origin :refs/heads/<branch>

Якщо ні, ви отримаєте таку помилку:

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

12
2018-05-05 17:28



Короткий і лаконічний. Цей пост разом із Меганчжоу з'явився як відповідь на те, чому у нас виникли проблеми, а також бренд і тег були однаковими. Я видалив місцевий тег і поставив: refs / tags, і все було добре. - rwheadon


Якщо ви створили тег з назвою release01 в сховищі Git ви видалите його зі свого сховища, виконавши таке:

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

Щоб видалити його з сховища Mercurial:

hg tag --remove featurefoo

Будь ласка, посилання https://confluence.atlassian.com/pages/viewpage.action?pageId=282175551


8
2017-11-11 05:54





Видалити локальний тег '12345'

git tag -d 12345

Видалити віддалений тег '12345' (наприклад, версію GitHub теж)

git push origin :refs/tags/12345

альтернативний підхід

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

enter image description here


5
2018-03-23 09:50