小编典典

删除不再在远程存储库上的本地 git 标签

all

我们在 git 中使用标签作为部署过程的一部分。有时,我们希望通过从远程存储库中删除这些标签来清理它们。

这很简单。一个用户在一组命令中删除本地标签和远程标签。我们有一个结合了这两个步骤的小 shell 脚本。

第 2 个(第 3、第 4、…)用户现在具有不再反映在远程上的本地标签。

我正在寻找一个类似于git remote prune origin清理已删除远程分支的本地跟踪分支的命令。

或者,可以使用列出远程标签的简单命令与通过返回的本地标签进行比较git tag -l


阅读 143

收藏
2022-03-08

共1个答案

小编典典

好问题。:) 我没有完整的答案…

也就是说,您可以通过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有一个与您想要的相反的选项。以下命令将列出您在本地 没有的远程分支上的所有标签:

git ls-remote --tags origin | git show-ref --tags --exclude-existing
2022-03-08