Удалить все теги из репозитория 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
другие способы получения списка строк, обертывания их в кавычки, создания их возможно, существует одна строка, а затем передача этой строки команде. Учитывая, что это конечная среда для снятия кожи с кошки и все такое.
добавление к ответу Стефана, который отсутствовал, как удалить теги из remote. Для 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 tag и подавая этот список в git tag-d:
FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a
(найдено на: https://gist.github.com/RandomArray/fdaa427878952d9768b0)