Удалить все теги из репозитория Git

Я хочу удалить все теги из репозитория Git. Как я могу это сделать?

Используя git tag -d tagname локально удалите тег tagname и используя git push --tags, я обновляю теги в Git поставщике.

Я пробовал:

git tag -d *

Но я вижу, что * означает файлы из текущего каталога.

$ git tag -d *
error: tag 'file1' not found.
error: tag 'file2' not found.
...

У меня много тегов, и я хочу их удалить.

Ответ 1

git tag | xargs git tag -d

Просто используйте философию Linux, где вы все делаете. В Windows используйте git bash с той же командой.

Ответ 2

Чтобы удалить удаленные теги (перед удалением локальных тегов), просто выполните:

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

а затем удалите локальные копии:

git tag | xargs git tag -d

Ответ 3

Более эффективно удалять все теги в одной команде. Особенно, если у вас несколько сотен.

В подходящей оболочке без окна удалите все удаленные теги:

git tag | xargs -L 1 | xargs git push origin --delete

Затем удалите все локальные теги:

git tag | xargs -L 1 | xargs git tag --delete

Это должно быть ОК, если у вас нет тега ' в именах тегов. Для этого следующие команды должны быть в порядке.

git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git push origin --delete
git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git tag --delete

Другие способы выбора списка строк, обертывания их в кавычки, создания одной строки и, возможно, передачи этой строки в команду. Учитывая, что это конечная среда скинов для кошек и все.

Ответ 4

Добавление к Stefan ответа, который отсутствовал, как удалить теги с удаленного. Для Windows powershell вы можете запустить это, чтобы сначала удалить удаленные теги, а затем локальные теги.

git tag | foreach-object -process { git push origin --delete $_ }
git tag | foreach-object -process { git tag -d $_ }  

Ответ 5

Для пользователей Windows, использующих PowerShell:

git tag | foreach-object -process { git tag -d $_ }

Это приведет к удалению всех тегов, возвращаемых git tag, путем выполнения git tag -d для каждой возвращаемой строки.

Ответ 6

Для пользователей Windows:

Это удаляет все локальные теги, запустив тег git и передав этот список в тег git -d:

FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a

(Найдено по: https://gist.github.com/RandomArray/fdaa427878952d9768b0)

Ответ 7

Если у вас нет тегов в вашем локальном репо, вы можете удалить удаленные теги, не беря их в свое местное репо.

git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete

Не забудьте заменить "origin" на ваше имя удаленного обработчика.

Ответ 8

Вы также можете использовать:

git tag -d $(git tag)

Ответ 9

Поскольку все эти опции работают только в linux, здесь окна эквивалентны всем, кому приходится иметь дело с этим: FOR/F usebackq %t IN ( тег git ) DO @git tag --delete %t