Удалить все теги из репозитория 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.
...
считайте меня много тегов, и я хочу удалить их все.
9 ответов
git tag | xargs git tag -d
просто используйте философию Linux, где вы передаете все. В Windows используйте git bash с той же командой.
чтобы удалить удаленные теги (перед удалением локальных тегов), просто сделайте:
git tag -l | xargs -n 1 git push --delete origin
а затем удалите локальные копии:
git tag | xargs git tag -d
Примечание: добавлен этот ответ для будущих гуглеров.
это может быть более эффективным, чтобы нажать Удалить все теги в одной команде. Особенно если у вас их несколько сотен.
в подходящей оболочке без windows удалите все удаленные теги:
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
другие способы получения списка строк, обертывания их в кавычки, создания их возможно, существует одна строка, а затем передача этой строки команде. Учитывая, что это конечная среда для снятия шкуры с кошки и все такое.
добавление к ответу Стефана, который отсутствовал, как удалить теги с удаленного. В Windows powershell это можно выполнить для удаления удаленных тегов, за которыми следуют локальные теги.
git tag | foreach-object -process { git push origin --delete $_ }
git tag | foreach-object -process { git tag -d $_ }
для пользователей Windows, использующих PowerShell:
git tag | foreach-object -process { git tag -d $_ }
Это удаляет все теги, возвращенные git tag
при выполнении git tag -d
для каждой строки, возвращаемой.
для пользователей windows:
это удаляет все локальные Теги, запустив тег git и подав этот список в git tag-d:
FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a
(найдено на:https://gist.github.com/RandomArray/fdaa427878952d9768b0)
Если у вас нет тегов в локальном РЕПО, вы можете удалить удаленные теги без необходимости переносить их в локальное РЕПО.
git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete
Не забудьте заменить "origin" на имя удаленного обработчика.
поскольку все эти параметры работают только в linux, вот эквивалент windows для любого, кто должен иметь дело с этим:FOR /F usebackq %t IN (
git tag) DO @git tag --delete %t