Как я могу заархивировать старые теги git и перенести мои изменения в источник? - PullRequest
1 голос
/ 09 июля 2019

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

Я ссылаюсь на ответ на знакомый вопрос: Как мне архивировать старыеgit tags?

Я создал новую папку ref / archive / tags и переместил все затронутые теги в эту папку.

Предположим, я не могу внести изменения непосредственно в Origin, но должен сделать это в своем локальном хранилище.Как я могу подтолкнуть изменения тогда?Я использую следующую команду: git push origin refs / tags / : refs / tags / refs / archive / tags / : refs / archive / tags /

И получите следующую обратную связь: Все в актуальном состоянии Мои коллеги могут получить архивную папку, но старые теги остаются под ссылками / тегами.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 17 июля 2019

В конце я использовал следующий скрипт.Он архивирует все теги, которые не названы «тест».Затем все теги в каталоге «refs / archive / tags» удаляются непосредственно по источнику.Нажмите на каталог архива, удалите все локальные теги и извлеките теги из источника.Возможно, есть более простые решения, но это сработало для меня следующим образом.

mkdir refs/archive/tags
shopt -s extglob
mv refs/tags/!(test) refs/archive/tags/
ls refs/archive/tags/ | xargs -n 1 -I% git push origin :refs/tags/%
git push origin refs/archive/tags/*:refs/archive/tags/*
git tag -l | xargs git tag -d
git fetch origin +refs/tags/*:refs/tags/*

Мои коллеги должны использовать следующий скрипт:

git tag -l | xargs git tag -d
git fetch origin +refs/archive/*:refs/archive/* +refs/tags/*:refs/tags/*

Восстановить все теги, если необходимо:

mv refs/archive/tags/* refs/tags/
git push origin --tags
0 голосов
/ 09 июля 2019

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

Чтобы удалить все локальные теги:

for x in `git tag`; do
git tag -d $x
done
git remote update
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...