无法在 GitHub 上删除名为 "master" 的标签

Can't Delete Tag Named "master" On GitHub

编辑: 与 GitHub 无关。问题是同步脚本出错(见评论)。


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

我是Stendhal project & we have our source code hosted on GitHub & SourceForge的会员。

我开始收到关于对 "master" 的模糊引用的警告或错误消息。经过一番调查,我发现有人在 Git 仓库中创建了一个名为 "master" 的标签。 GH 和 SF 存储库自动保​​持同步。我无法再使用 git push origin master 推送我的提交。我必须指定对主分支的引用:git push origin refs/heads/master

标签的存在不仅会导致 fetch/pull/push 出现问题,还会导致从站点下载的 tarball 与 master 分支不同步。当用户下载 "master" 压缩包时,他们实际上收到的是 "master" 标签而不是分支。

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

我知道如果用户在本地存储库中有标签并将其推送到远程,则会重新创建标签。所以我明白我需要让所有用户删除这个本地标签。但是标签不是从推送中重新创建的。出于某种原因,超出我的理解,GitHub 会在删除后几秒钟内自动重新生成此标签。

我最初认为问题出现在 GH 和 SF 上,因为标签不断出现在两个站点上。但直到最近我才发现它重新出现在 SourceForge 上的原因是因为软件使两个 repos 保持同步。每当在 GitHub 上重新创建标签时,都会提示软件在 SourceForge 上镜像更改。

我已经在 GitHub IRC channel 上与我自己项目的成员讨论过这个问题。但我还没有找到为什么会发生这种情况以及如何预防的答案。

在网上搜索了一下,找到的资料是关于如何删除远程标签的。但是我没有找到任何引用名为 "master" 的标签的内容以及我在 GitHub 上处理的内容。

找到我们的项目标签 here on GitHub. Currently, the master tag is at the top of the list & in sync with the master branch. But that will change as soon as new commits are pushed to master branch. The tag list on SourceForge is here。在写这篇文章的时候,我已经删除了 master 标签,所以它不会在 SF 上列出。但我相信当回购协议再次同步时,情况将会改变。不确定是否简单地推送提交会导致在 SF 上重新创建标签,或者它是否只会由直接对 GH 上的标签本身所做的更改触发。

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

因此:您可以删除远程标签和标签的本地副本,但如果有权推送到您的仓库的其他人在本地拥有标签,他将在中央仓库上重新创建标签在他的下一次推动中。


防止这种情况的一种方法是:禁止所有用户在中央 github 仓库上推送名为 master 的标签(我不熟悉 Github 的授权规则,我会让你搜索如何做到这一点),然后删除远程和本地标签。

。问题是使 Sourceforge 和 GitHub 存储库保持同步的脚本中的错误。