Ответ 1
git tag | xargs git tag -d
Просто используйте философию Linux, где вы все делаете. В Windows используйте git bash с той же командой.
Я хочу удалить все теги из репозитория 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.
...
У меня много тегов, и я хочу их удалить.
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
Более эффективно удалять все теги в одной команде. Особенно, если у вас несколько сотен.
В подходящей оболочке без окна удалите все удаленные теги:
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
Другие способы выбора списка строк, обертывания их в кавычки, создания одной строки и, возможно, передачи этой строки в команду. Учитывая, что это конечная среда скинов для кошек и все.
Добавление к Stefan ответа, который отсутствовал, как удалить теги с удаленного. Для 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 -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" на ваше имя удаленного обработчика.
Вы также можете использовать:
git tag -d $(git tag)
Поскольку все эти опции работают только в linux, здесь окна эквивалентны всем, кому приходится иметь дело с этим: FOR/F usebackq %t IN (
тег git ) DO @git tag --delete %t