我们在 git 中使用标签作为部署过程的一部分。有时,我们希望通过从远程存储库中删除这些标签来清理它们。
这很简单。一个用户在一组命令中删除本地标签和远程标签。我们有一个结合了这两个步骤的小 shell 脚本。
第 2 个(第 3、第 4、…)用户现在具有不再反映在远程上的本地标签。
我正在寻找一个类似于git remote prune origin清理已删除远程分支的本地跟踪分支的命令。
git remote prune origin
或者,可以使用列出远程标签的简单命令与通过返回的本地标签进行比较git tag -l。
git tag -l
好问题。:) 我没有完整的答案…
也就是说,您可以通过git ls-remote. 要列出由 引用的存储库中的标签origin,您将运行:
git ls-remote
origin
git ls-remote --tags origin
这将返回一个哈希列表和友好的标签名称,例如:
94bf6de8315d9a7b22385e86e1f5add9183bcb3c refs/tags/v0.1.3 cc047da6604bdd9a0e5ecbba3375ba6f09eed09d refs/tags/v0.1.4 ... 2f2e45bedf67dedb8d1dc0d02612345ee5c893f2 refs/tags/v0.5.4
您当然可以组合一个 bash 脚本来将此列表生成的标签与您在本地拥有的标签进行比较。看一下git show-ref --tags,它会生成与 ) 相同形式的标签名称git ls-remote。
git show-ref --tags
顺便说一句,git show-ref有一个与您想要的相反的选项。以下命令将列出您在本地 没有的远程分支上的所有标签:
git show-ref
git ls-remote --tags origin | git show-ref --tags --exclude-existing