无法删除GitHub上名为“ master”的标签

时间:2018-10-08 09:06:00

标签: git github master

编辑:与GitHub无关。问题是同步脚本中出现错误(请参见注释)。


几个月来我一直在尝试解决此问题,并且得出的结论是它与GitHub直接相关。

我是Stendhal项目的成员,我们的源代码托管在GitHubSourceForge上。

我开始出现警告或错误消息,提示对“主”的引用不明确。经过一番调查,我发现有人在Git仓库中创建了一个名为“ master”的标签。 GH&SF仓库会自动保持同步。我无法再使用git push origin master推送提交。我必须指定对master分支的引用:git push origin refs/heads/master

标签的存在不仅会导致提取/拉动/推送问题,还会导致从站点下载的tarball与master分支不同步。当用户下载“ master”压缩包时,他们实际上收到的是“ master”标记而不是分支。

现在我已经弄清楚了,我要处理的问题是从GitHub永久删除标签。每当我通过git push origin :refs/tags/master或仅通过GitHub的Web界面将其删除时,它都会在几秒钟内自动重新生成。一个有趣的细节是,当重新创建它时,它是从master分支创建的。

我了解,如果用户将标签放在本地存储库中并将其推送到远程,则会重新创建标签。因此,我知道我需要让所有用户删除此本地标签。但是不会通过推送重新创建标签。由于某些原因,据我所知,GitHub在删除该标记后的几秒钟内会自动重新生成该标记。

我原本以为GH和SF都出现了这个问题,因为该标签在两个网站上都不断出现。但是直到最近我才发现它重新出现在SourceForge上的原因是因为该软件使两个存储库保持同步。每当在GitHub上重新创建标签时,系统都会提示该软件以镜像SourceForge上的更改。

我已经与自己的项目成员以及GitHub IRC channel上进行了讨论。但是我还没有找到答案为什么会发生以及如何防止它。

在互联网上搜索时,我遇到的信息涉及如何删除远程标签。但是我没有找到任何引用名为“ master”的标签以及我在GitHub上处理的内容。

找到我们的项目标签here on GitHub。当前,master标签位于列表的顶部,并且与master分支同步。但是,一旦将新的提交推送到master分支,这种情况就会改变。 SourceForge is here上的标签列表。在撰写本文时,我已经删除了master标签,因此它不会在SF上列出。但是我相信,再次同步回购协议时,这种情况将会改变。不知道是简单地推动提交会导致在SF上重新创建标签,还是仅由直接在GH上对标签本身进行的更改来触发标签。

1 个答案:

答案 0 :(得分:0)

在常规git push期间,如果git推送给定的引用(例如refs/heads/masterrefs/heads/some/branch),它还将推送指向该历史记录中任何提交的任何标记参考。

因此:您可以删除远程标签,以及该标签的本地副本,但是如果有权推送到您的存储库的其他任何人都在本地拥有该标签,则他将在其中央存储库上重新创建该标签。下一次推送。


一种防止这种情况的方法是:禁止所有用户在中央GitHub存储库上推送名为master的标签(我不熟悉Github的授权规则,我将让您搜索如何执行此操作),然后删除远程和本地标签。