Github入门5 – 版本标签

  • Post author:
  • Post category:其他


[原文链接:

Link

]

转载请注明原作者




🧩 Git tag:区分 git commit 版本,与真实软件版本

在 git 系统中,每一个 commit 就是一次新的版本,版本都用 hash 来代表。

但真实开发环境下,每个软件从 v1.0.1 到 v 1.0.2 可能需要

经历多次

commit 才会开发出来。

这就是软件版本与 commit 版本的区别。

而 tag,就是被用于给 commit

标上当前软件版本号

的指令。

如:

  • 在软件 v1.0.1 完成之时,给它发布前的最后一个 commit 标上

    v1.0.1

    tag (标签)。

此外,

养成标


tag


的习惯可以让你更方便地进行版本回滚!

(而不是每次都要用 git reflog 去翻找 hash)




🔖 tag 底层原理


本质:

tag 与 blob, tree, commit 类似,也是一个

对象

但仅封装了 commit 的 hash,外加一个名字。仅此而已。


结构:

tag 的数据库可以理解为一个

string-hash

的 k-v 键值对

key 存

tag 名

, value 存

hash


位置:

tag 的信息被存储在

/.git/refs/tags




🔖 tag 的 CURD 操作



✨ 创建 tag
  • 创建最简单的(

    轻量级

    )标签:


    • $ git tag <tagName>

      在本 commit 直接创建

    • $ git tag <tagName> <commitHash>

      定点创建 tag
  • 创建

    带有附注

    (annotation)的标签 (

    比如添加一句版本小总结

    ):


    • $ git tag --annotate <tagName> --message="ANNOTATION TEXT"

    • $ git tag -a <tagName> -m "ANNOTATION TEXT"



      上述的简写版



  • 特殊

    )创建带有附注,且具有

    个人 GPG 签名

    的标签(

    类似 SSH 公钥,在 tag 上标注你的个人认证信息


    • $ git tag --sign <tagName> --message="ANNOTATION TEXT"

    • $ git tag -s <tagName> -m "ANNOTATION TEXT"



      上述的简写版



  • 特殊

    )验证标签 GPG 公钥:


    • git tag --verify <tagName>

    • git tag -v <tagName>



      上述的简写版



✨ 查看 tag
  • 筛选 tag:


    • $ git tag --list

      列出所有 tags

    • $ git tag --list "v1.*"

      筛选符合

      v1.*

      的全部 tags
  • 分析某 tag 所在的 commit 内容


    • $ git cat-file -p <tagName>

      查看对象内容

    • $ git cat-file -t <tagName>

      查看对象类型 (返回为 commit 对象)

    • $ git show <tagName>

      查看对象内容 +

      $ git diff


✨ 转到 tag
  • 又是我们的老朋友

    checkout



    它承担了太多



✨ 删除 tag

  • $ git tag --delete <tagName>

  • $ git tag -d <tagName>



    上述的简写版



✨ 上传 tag 到 remote (远程仓库) !
  • 虽然还没讲到

    $ git push

    ,但还是要说一下:


    • $ git push


      !!!默认不上传本地


      tags


      !!!
  • 需要使用如下方式共享 tags 到远程仓库:


    • $ git push origin --tags

      上传

      全部

      新增 tags

    • $ git push origin <tagName>

      上传

      指定

      tag



🔖 在 Github 查看你的 tags

在 Github 查看你的 tags

十分漂亮。




☠️ 老朋友 checkout 的老问题: 游离态 HEAD

由于 🔖

tag

是直接打在

commit

上的,



checkout

功能既可以给

HEAD

切换

branch

,又可以给

HEAD

切换到 🔖

tag

上。

我想你现在已经明白结果会怎样了(如果你看过上一篇内容)。

解决方式和上一篇中的相同。


😄

望这篇笔记能对你也有所帮助,若是喜欢,也不妨点一下收藏,万分感谢。


如有错误,也尽请指出。



版权声明:本文为i493052739原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。