我想摆脱一些旧标签。但是我不想删除它们,我只想存档它们,以便在必要时可以还原它们。
我指的是一个更简单的问题的答案: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下。我在做什么错了?
答案 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