二 『现学现忘』Git基础 — 37、标签tag( 二 )

如上,命令执行完毕,系统给出了很多的提示,该提示的总体意思为:当前处于“分离头指针”状态,在该状态下用户的任何修改与提交对任何的分支都没有影响(言外之意是:其修改将不会被保留) 。若想要保留修改,则可以通过git checkout -b命令,创建一个新的分支 。
这里特别要注意一点,就是最后一行命令提示符末尾的((v1.0)),说明此时HEAD指针,指向了v1.0标签 。
继续执行命令:
# 3.执行git checkout -b 命令 , 是新的提交有分支指向L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github ((v1.0))$ git checkout -b newbranchSwitched to a new branch 'newbranch'L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github (newbranch)$我们可以看到HEAD指针由(v1.0)标签指向了newbranch分支上 。在该新分支上再进行修改提交,然后再合并到master分支,最后再将该分支删除,此时创建的分支名称可以随意 。
newbranch分支合并到master分支后,仍需要删除原标签,然后再与新的commit-id绑定 。所以,生产环境下 , 一旦标签定义完成,就不会对标签进行删除再绑定 。而是会再定义一个新的标签与新的提交绑定 。
8、标签在.git目录中的位置无论是轻量标签还是附注标签,他们都会存在在.git/refs/tags目录中 。
# 1.查看.git/refs/tags目录L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ ll .git/refs/tags/total 2-rw-r--r-- 1 L 197121 414月 18 17:12 v1.0-rw-r--r-- 1 L 197121 414月 19 20:46 v2.0# 2.查看v1.0标签的内容L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git cat-file tag v1.0object b97ccfd5f3e98c12ab9c0fb4ca4b308e6805f7edtype committag v1.0tagger sun_wk <sun_wk@126.com> 1618737173 +0800v1.0 里程碑# 3.查看v1.0标签内容中object的类型L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git cat-file -tb97ccfd5f3e98c12commit# 我们可以看到object对象的类型是commit对象 , # 是一个提交,所以索引的是一个提交 。# 4.查看V1.0标签文件中的内容 , 可以看到也是一个对象的索引L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ cat .git/refs/tags/v1.0e086427dfe88d8cd370d2f94eaf8610c169a3333# 5.查看这个对象的类型L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git cat-file -t e086427tag# 我们可以查看该对象是一个标签对象 。# 6.我们也可以通过tag对象的索引值,查看内容,# 和上边git cat-file tag v1.0命令显示的内容是一样的 。L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git cat-file -p e086427object b97ccfd5f3e98c12ab9c0fb4ca4b308e6805f7edtype committag v1.0tagger sun_wk <sun_wk@126.com> 1618737173 +0800v1.0 里程碑总结来说:

  1. Git中的标签 , 都会以文件的形式存储在.git/refs/tags目录中 。
  2. 文件中记录的是tag标签的校验和(索引值) 。
  3. 通过索引值或者标签名可以查看该tag对象的内容 。
  4. tag对象的内容就包括他指向的commit 。其实tag对象就是对commit对象的一个封装 。
9、本文中所使用到的命令
  • git tag:查看版本库中的标签列表 。
  • git tag -l "v1.8.5*":查看版本库中,可匹配的标签列表 。
  • git tag -a 标签名 -m '说明信息':当前分支最新一次提交打标签 。
  • git tag -a 标签名 commit-id -m '说明信息':为之前的提交打标签 。
  • git tag 标签名:创建轻量标签 。
  • git push 远程仓库名 标签名:推送标签到远程仓库 。
  • git push 远程仓库名 --tags:推送所有标签到远程仓库 。
  • git tag -d 标签名 :删除本地版本库中的标签 。
  • git show 标签名:擦看标签的具体信息 。
【二 『现学现忘』Git基础 — 37、标签tag】

推荐阅读