Ответ 1
Вы не можете. Метки, удаленные на удаленном компьютере, не будут удалены локально на pull
/fetch
/etc.
В настоящее время мы очищаем наш репозиторий git в связи с нелепым количеством ветвей и тегов, которые просто не нужны.
Мы сделали часть ветвей, но часть тегов оказалась затруднительной.
Мы удалили ветки на пульте дистанционного управления и попросили нашу команду сделать git pull --prune
для удаления указанных ветвей в локальных репозиториях.
Проблема заключается в том, что не существует способа сделать это с помощью тегов. Мы можем удалить тег удаленно довольно легко, но мы не можем получить это изменение для распространения до других локальных репозиториев, когда делаем git pull
или gc
или remote prune
.
Любые идеи о том, как это сделать?
Или нам просто нужно остановить людей от использования git push --tags
, пока они не повторно клонируют репо?
Вы не можете. Метки, удаленные на удаленном компьютере, не будут удалены локально на pull
/fetch
/etc.
В более старых версиях Git это работает нормально:
git fetch --tags --prune
(Но это больше не работает с Git версии 1.9.0 или новее.)
Я не думаю, что есть простой способ удалить теги с помощью push, но вы можете поручить своим людям удалить все свои локальные теги
for tag in $(git tag); do git tag -d ${tag}; done
а затем выберите из основного репо, чтобы синхронизировать те, которые должны оставаться в живых.
Я не вижу причин потакать теги по умолчанию, так как теги в git довольно нерушимы и обычно выполняются только для релизов как похожие важные этапы.
Поскольку "git fetch --tags --prune" не работает для меня, я помещаю che solution в псевдоним, который отлично работает для меня:
# update tags
ut = "!sh -c 'for tag in $(git tag); do git tag -d ${tag}; done; git fetch --tags'"