Подтвердить что ты не робот

Как вы удаляете тег git и распространяете это удаление с помощью git на других?

В настоящее время мы очищаем наш репозиторий git в связи с нелепым количеством ветвей и тегов, которые просто не нужны.

Мы сделали часть ветвей, но часть тегов оказалась затруднительной.

Мы удалили ветки на пульте дистанционного управления и попросили нашу команду сделать git pull --prune для удаления указанных ветвей в локальных репозиториях.

Проблема заключается в том, что не существует способа сделать это с помощью тегов. Мы можем удалить тег удаленно довольно легко, но мы не можем получить это изменение для распространения до других локальных репозиториев, когда делаем git pull или gc или remote prune.

Любые идеи о том, как это сделать?

Или нам просто нужно остановить людей от использования git push --tags, пока они не повторно клонируют репо?

4b9b3361

Ответ 1

Вы не можете. Метки, удаленные на удаленном компьютере, не будут удалены локально на pull/fetch/etc.

Ответ 2

В более старых версиях Git это работает нормально:

git fetch --tags --prune

(Но это больше не работает с Git версии 1.9.0 или новее.)

Ответ 3

Я не думаю, что есть простой способ удалить теги с помощью push, но вы можете поручить своим людям удалить все свои локальные теги

for tag in $(git tag); do git tag -d ${tag}; done

а затем выберите из основного репо, чтобы синхронизировать те, которые должны оставаться в живых.

Я не вижу причин потакать теги по умолчанию, так как теги в git довольно нерушимы и обычно выполняются только для релизов как похожие важные этапы.

Ответ 4

Поскольку "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'"