如何在GitHub上创建公共或私有仓库的发行版?

17

我有一个问题,如何在 GitHub 的公共或私有仓库中创建发布版本?如何使用 Windows 命令提示符或 Linux 终端进行操作?是否有特殊的命令?


也许这个链接可以帮到你:https://help.github.com/articles/creating-releases/. - julian salas
@ Julian Salas非常感谢您。您提供的文章非常有信息量! - Kaviranga
3个回答

31

以下示例展示如何进行单个发布周期,首先您需要创建一个中央代码库,然后创建一个开发分支。

创建开发分支

git branch develop
git push -u origin develop

该分支包含您的项目的完整历史记录,而master则包含新版本。然后,您的团队应克隆中央代码库并为开发分支创建跟踪分支。

为开发分支创建跟踪分支

git clone ssg: //user@/path/
git checkout -b develop origin/develop

每个人现在都有了本地副本。因此,您决定创建新功能。为此,您将以开发分支为基础创建各自功能的单独分支。

开始新功能

git checkout -b some-feature develop

您可以根据需要向功能分支添加提交,然后:

git status
git add <some-file>
git commit

您完成了功能开发

在添加新功能之后,您决定您的功能已经准备好,并且现在可以将其合并到本地的 develop 分支并将其推送到中央仓库,就像这样:

git pull origin develop
git checkout develop
git merge some-feature
git push
git branch -d some-feature

第一条命令确保在尝试合并功能之前,开发版本是最新的。注意,功能绝不能直接合并到master

您开始准备发布

当其他开发人员正在开发其功能时,您可以开始准备项目的第一个正式发布版本,您可以使用新分支来封装发布准备工作。这一步还确定了发布的版本号:

git checkout -b release-0.1 develop

这个分支是用来清理发布内容、测试一切、更新文档以及做任何其他准备工作来准备即将发布的版本。它类似于专门用于打磨发布版本的功能分支。

完成发布

一旦发布准备就绪,您会将其合并到主分支和develop分支中,然后删除发布分支。重要的是要合并回develop,因为可能已经添加了关键更新到发布分支,它们需要对新功能可访问。如下所示:

git checkout master
git merge release-0.1
git push
git checkout develop
git merge release-0.1
git push
git branch -d release-0.1

你应该知道,发布分支在功能开发和公共发布之间起到了缓冲作用。每当你将某些内容合并到 master 分支时,最好为易于参考而标记提交:

git tag -a 0.1 -m "Initial public release" master
git push --tags

如果你想要更好的解释,请访问这个链接:https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow


太好了!我会尽快检查您的解决方案,再次感谢您。这正是我想要的! - Kaviranga
啊哈!我对git checkout命令感到困惑,你的回答对此有很好的解释! - Kaviranga

10
发布是GitHub的一个功能,而不是通用git的功能(类似于其他Github额外功能,如Issues和Pull Requests)。但是,人们创建了一些项目,可以让您从命令行创建GitHub发布。以下是我能找到的一些项目:
  1. Go (golang)实现的GitHub发布:https://github.com/aktau/github-release

  2. JavaScript实现的GitHub发布:https://github.com/ungoldman/gh-release


1
非常感谢您提供的信息。这很有趣,也非常有帮助! - Kaviranga

1
如何使用Windows命令提示符或Linux终端?有没有特殊的命令?
有,使用GitHub CLIP中的gh,您需要先安装
gh 2.19.0(2022年11月)以来,您可以使用{{link3:gh create release}}:

Support explicitly marking a Release as "Latest" by @mislav in #6538

Example:

cd /path/to/local/repository
gh release create v1.3.0 --latest --target=main --notes ""
gh release create v1.2.1 --latest=false --target=1.2-stable --notes ""
这很有帮助,因为从2022年10月起,您可以将最新版本明确设置为任何您想要的版本。

之前,存储库的最新版本是在最近日期创建的版本。如果多个版本具有相同的日期,则语义化版本号会打破平局。

这个新功能提供了一个明确的开关,在您创建时将版本标记为“最新”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接