Git tag 和 GitHub releases

本小节首要包括:

  1. Git 标签的效果
  2. 创立标签
  3. 检查标签
  4. 推送本地标签至长途库房
  5. 删去标签
  6. 签出标签对应的提交版别
  7. GitHub releases 简介

一、Git 标签的效果

在一个项目中,咱们可能需求阶段性地发布一个版别,比方 V1.0V1.0.2V3.2 Beta 之类的,Git 的标签能够满意这个需求。在一个长期大型项目中,可能会有数千个提交版别,咱们可能需求对重要的节点性提交打个记号,这时也能够运用 Git 的标签功用。在一些项目相关的书本中,咱们会看到 “履行 xxx 指令签出这个版别以检查对应的代码” ,这也是运用 Git 的标签功用做到的。本节试验将详细讲解此功用的详细操作。

1. 创立标签

前面的课程提到过 GitHub 的 issue 功用,issue 是库房具有者在 GitHub 上手动创立的,库房被 Fork 时 issue 不会跟从。Tags 一般在本地运用 git 指令创立后推送到 GitHub 上,与 issue 相同的一点,它也只存在于项目库房内,Fork 或提 PR 都不会带上它。在多人协作项目中,一般由组长对主库房设置 Tags,单人项目自然便是自己说了算。

开端操作。首要,克隆库房(组员)、配置信息、检查提交版别前史:

GitHub 基础教程06 -  Git tag 和 GitHub releases

重要的一点,咱们创立标签是给详细的某次提交创立的,跟分支无关。创立标签运用 git tag [标签名] -m [补白信息] [提交版别号] 这个指令。其间 -m [补白信息] 能够省掉不写,但主张不要省掉。[提交版别号] 能够省掉,假如是给当时分支最新的提交创立标签的话。

给当时分支当时版别创立一个标签: 这样一个本地标签就创立完成了。

GitHub 基础教程06 -  Git tag 和 GitHub releases

2. 检查标签

履行 git tag 指令显现库房中的悉数标签列表,履行 git show [标签名] 检查标签概况:

GitHub 基础教程06 -  Git tag 和 GitHub releases

前文已提到,标签是在提交的基础上创立的,假如库房的多个分支中都有这个提交版别,那么这些分支上就有关于这个提交的相同的标签。

3. 删去本地标签

当咱们履行 git tag [标签名] 创立本地标签后,在库房主目录的 .git/refs/tags 目录下就会生成一个标签文件:

GitHub 基础教程06 -  Git tag 和 GitHub releases

履行 git tag -d [标签名] 删去本地标签,标签文件也会被删去:

GitHub 基础教程06 -  Git tag 和 GitHub releases

4. 将本地标签推送至长途库房

首要对两个提交版别创立对应的标签:

GitHub 基础教程06 -  Git tag 和 GitHub releases

履行 git push origin [标签名] 推送标报到长途库房,留意前面的指令都只涉及本地操作不需求联网,此指令需求联网:

GitHub 基础教程06 -  Git tag 和 GitHub releases

咱们到浏览器上打开库房主目录,点击下图赤色框能够检查 releases 和 tags :

GitHub 基础教程06 -  Git tag 和 GitHub releases

点 Tags 按钮检查标签:

GitHub 基础教程06 -  Git tag 和 GitHub releases

关于 releases 是什么,下文会介绍。

假如你一口气创立了 6 个标签,当然啦,这种状况很少产生,能够运用 git push origin –tags 指令将悉数本地标签推送至长途库房:

GitHub 基础教程06 -  Git tag 和 GitHub releases

检查长途库房状况:

GitHub 基础教程06 -  Git tag 和 GitHub releases

5. 删去长途库房标签

假如标签废弃不用或者写错了,能够运用 git push origin :refs/tags/[标签名] 删去长途库房的标签,指令中的标签名其实也便是文件名:

GitHub 基础教程06 -  Git tag 和 GitHub releases

再次检查长途库房:

GitHub 基础教程06 -  Git tag 和 GitHub releases

好,删去成功。以上便是关于 Git 标签的创立、检查、推送、删去的操作流程。

检查本地库房的标签列表:

GitHub 基础教程06 -  Git tag 和 GitHub releases

咦,001 标签还在呢?是的,本地标签需求别的手动删去,上文已演示。

如下所示:

GitHub 基础教程06 -  Git tag 和 GitHub releases

6. 签出版别

现在介绍一下关于 “签出版别” 的操作,咱们会见到类似这种阐明:“假如你从 GitHub 上克隆了这个程序的库房,那么能够在库房主目录下履行 git checkout xxx 签出程序的这个版别。” 其实签出版别便是指定某个提交版别创立一个新的分支。

假定当时的 work 库房便是一个程序,咱们要签出 001 版别,履行以下步骤即可。

首要履行 git checkout [标签名] 切换到之前的某个提交版别,然后履行 git checkout -b [新的分支名] 将此提交版别固定到一个新分支上并切换到此分支:

GitHub 基础教程06 -  Git tag 和 GitHub releases

将提交版别固定到一个新分支上:

GitHub 基础教程06 -  Git tag 和 GitHub releases

这样就使用标签完成了提交版别签出的工作。

二、GitHub 的 releases

GitHub 的 releases 是 2013 年发布的新功用,旨在帮忙软件开发者分发新版别给用户,关于这个功用这儿仅作简单介绍。

当项目安排宣告发布一个软件产品的版别,发布进程便是一个将软件交付给最终用户的工作流。版别是具有修正日志和二进制文件的一类对象,它们供给了 Git 工作流之外的完整项目前史,它们也能够从存储库的主页上被拜访。发布版 release 附带发布阐明和下载软件或源代码的链接。按照许多 Git 项目的约好,发布版别与 Git 的标签 tag 绑定。您能够运用现有的标签,或者让 release 在发布时创立标签。这便是上面检查 GitHub 库房中标签信息时呈现的场景。

标签是 Git 中的概念,而 releases 则是 Github、码云等源码托管商所供给的更高层的概念。Git 自身是没有 releases 这个概念,只有 tag。两者之间的关系则是,release 根据 tag,为 tag 添加更丰富的信息,一般是编译好的文件。

三、总结

本节所讲知识点:

  1. Git 标签的效果
  2. 创立标签
  3. 检查标签
  4. 推送本地标签至长途库房
  5. 删去标签
  6. 签出标签对应的提交版别
  7. GitHub releases 简介

以上便是 Git 标签的悉数操作和 GitHub releases 的介绍,相对前面的课程而言比较简单,依照文档的步骤操作一遍即可掌握。