如何在不创建版本的情况下在 GitHub 中创建标签?

How do I create a tag in GitHub without creating a release?

我即将对我的项目进行重大技术更改,从 ANT 转移到 Gradle。该项目从未发布过——它仍在开发中。我想标记最后一个旧技术版本,以便可以找到它以供参考或还原。但我不想暗示有任何形式的释放。

[一个补充想法:我希望一些感兴趣的人看到一个版本并认为它可能是一个可用的“版本”。也就是说,我认为发布是针对用户的,标签是针对开发人员的。 ]

我更喜欢不需要我进入 Git 命令行的答案,但如果有必要,请假设我已经忘记了我曾经尝试学习的东西。

在对问题 create-a-tag-in-a-github-repository 的回答的评论中,@RandomDSdevel 说:

[S]houldn't you be able to create tags that don't automatically get picked up by GitHub as releases…?

然后

I submitted a support request to GitHub about this a while ago, but they had a bit of a support backlog back then, so my request was closed.

最简单的解决方案是创建一个版本(在 GitHub UI 中),然后删除该版本。
这将删除版本,但标签将保持不变,这将是您问题的解决方案。

希望这对你有用。

I wish I had just done it in a branch.

现在还不算太晚,而且不会丢失任何历史。

现在从 master 创建一个分支,这将使您的 Ant -> Gradle 工作。

git branch ant_to_gradle master

将 master 移回上次稳定提交。

git checkout master
git reset --hard <last stable commit>

Gently force push 重置 master 分支。

git push --force-with-lease

继续 ant_to_gradle 工作,不要管 master。

是的,这涉及进入命令行。有 Git 个应用程序可以为您执行此操作,我喜欢 GitUp,但我的建议是熟悉命令行。应用程序很有用,但有局限性。

But that still leaves the question of tagging the pre-merge master version just in case I want to refer to it later.

您可以在本地标记它而不是推送标记。

你可以标记它并相信如果有人看到一个名为 pre-gradle 的版本,他们就会知道他们正在进入什么。您也可以 edit a release to mark it a pre-release.

但我的建议是不要在你的 repo 中乱放“以防万一我需要它”标签,而是进行可搜索的提交并获得舒适的搜索历史记录;因为你不会总是想做一个标签。如果您在合并请求中合并您的工作,Github 将生成一致的合并提交消息,如 Merge pull request #1859 from ant_to_gradle。然后你可以搜索它以找到合并提交并向后看。

总结我迄今为止使用 GitHub 创建没有发布的标签的经验:

我可以创建一个版本,但它要求我的标签名称在开头有一个版本,比如

v0.0-MyTagName

如果我 delete the release,该标签仍显示在标签列表下方(以及发布列表,但至少它不会像发布那样显示在标题类型中) .

此时我可以编辑标签名称以去掉“v0.0-”,留下我真正想要的名称。看起来它会将您切换到编辑版本,但除非您添加标题,否则它会保留为标签。现在它看起来不像一个版本,即使标签名称显示在版本列表中。

使用 git 而不是 GitHub,您可以做更多事情。

我在 GitHub 桌面版中找不到标签或版本。如果您只想查看分支机构的代码,则必须在线进行。如果要修改标签处的代码,当然需要创建一个分支。分支在 GitHub 桌面中可见。