如何归档旧的git标签并将更改推送到原始位置?

时间:2019-07-09 12:33:44

标签: bash git

我想摆脱一些旧标签。但是我不想删除它们,我只想存档它们,以便在必要时可以还原它们。

我指的是一个更简单的问题的答案:How can I archive old git tags?

我创建了一个新的文件夹ref / archive / tags并将所有受影响的标签移到该文件夹​​中。

假设我无法直接在Origin中进行更改,但是必须在我的本地存储库中进行更改。那我该如何推送更改? 我正在使用以下命令:     git push origin refs / tags / :refs / tags /     refs / archive / tags / :refs / archive / tags /

并收到以下反馈:     一切都是最新的 我的同事可以获取存档文件夹,但是旧标签保留在refs / tags下。我在做什么错了?

2 个答案:

答案 0 :(得分:0)

除非您删除同事,否则不会从您的同事的回购中删除这些标签。就像您不能先删除标签就不能更改标签一样。另一种选择是将您的存储库克隆到新目录。

要删除所有本地标签:

"b"

答案 1 :(得分:0)

最后,我使用了以下脚本。它存档所有未命名为“ test”的标签。然后,目录“ 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