Множественное удаление GIT тегов
Некоторые workflow (например, с большим количеством RC‑тегов на каждый спринт) подразумевают активное использование тегов. Со временем теги захламляют репозиторий, и релиз‑инженерам приходится регулярно их чистить.
Удалять каждый тег по одному — боль. Нам нужен массовый способ.
Цель
- Найти все теги по маске (например,
RC\d+). - Удалить их с remote.
- Удалить их локально.
Рекомендуемый порядок: сначала — на сервере, потом — локально.
Команды
Удаляем подходящие теги с origin:
bash
git tag -l | awk '/^(RC[0-9]+)$/ {print ":refs/tags/" $1}' | xargs git push originУдаляем те же теги локально:
bash
git tag -l | awk '/^(RC[0-9]+)$/ {print $1}' | xargs git tag -dРазбираем первую команду:
git tag -l— список всех тегов;awk '/^(RC[0-9]+)$/ {print ":refs/tags/" $1}'— выбираем теги по маске и подготавливаем формат дляgit pushс удалением;xargs git push origin— применяемgit push origin :refs/tags/<tag>ко всем найденным тегам.
Во второй команде awk просто печатает имя тега, а xargs git tag -d удаляет его локально.