12

由于大量不需要的分支和标签,我们目前正在清理我们的 git 存储库。

我们已经完成了分支部分,但标签部分证明很麻烦。

我们删除了远程分支,并要求我们的团队git pull --prune在他们的本地仓库中删除上述分支。

问题是,似乎没有办法用标签做到这一点。git pull我们可以很容易地远程删除标签,但是当我们执行 a , or gc, or时,我们无法将该更改传播到其他本地存储库remote prune

关于如何做到这一点的任何想法?

还是我们只需要阻止人们使用git push --tags,直到他们重新克隆回购?

4

4 回答 4

10

你不能。在远程删除的标签不会在本地删除pull/ fetch/etc。

于 2012-05-29T13:54:13.933 回答
10

在旧版本的 Git 中,这似乎工作正常:

git fetch --tags --prune

(但这不再适用于 Git 版本 1.9.0 或更高版本。)

于 2013-08-19T09:05:44.443 回答
4

我不认为有一种简单的方法可以通过推送删除标签,但是您可以指示您的人员删除他们所有的本地标签

for tag in $(git tag); do git tag -d ${tag}; done

然后从主仓库中获取以同步那些应该保持活跃的。

我认为默认情况下没有任何理由推送标签,因为 git 中的标签非常坚不可摧,并且通常只针对类似重要里程碑的发布。

于 2012-05-29T13:57:11.587 回答
0

因为“git fetch --tags --prune”对我不起作用,所以我将 che 的解决方案放入了一个对我来说很好的别名:

# update tags
ut = "!sh -c 'for tag in $(git tag); do git tag -d ${tag}; done; git fetch --tags'"
于 2014-10-02T06:12:20.340 回答