Множественное удаление GIT тегов

mbaev 21.06.2017, 14:24

deleteНекоторые workflow (англ) подразумевают использование тегов и релиз инженеры, использующие методологию Scrum, нуждаются в ежеспринтовой очистке RC-тегов. От спринта к спринту количество тегов может меняться и доходить до десятков. Удалять каждый GIT тег достаточно трудоёмко и хочется упростить свою работу множественным удалением GIT тегов. Это сделать достаточно просто: нужно всего лишь найти все теги по маске и применить к ним команду удаления тегов. Рекомендую выполнять команды именно в таком порядке, ибо первая ищет теги по маске на локальном компьютере и пытается удалить их с сервера, а вторая удаляет найденные теги с локального компьютера.

  1. git tag -l | awk '/^(RC[0-9]+)$/ {print ":refs/tags/"$1}'  | xargs git push origin
  2. git tag -l | awk '/^(RC[0-9]+)$/ {print $1}'  | xargs git tag -d

Здесь:

  • git tag -l
    Выводит список всех тегов
  • awk
    Ищет текст по регулярному выражению
  • ^(RC[0-9]+)$
    Маска для поиска
  • xargs
    Применят команду к результатам

Полезные ссылки