如上,命令执行完毕,系统给出了很多的提示,该提示的总体意思为:当前处于“分离头指针”状态,在该状态下用户的任何修改与提交对任何的分支都没有影响(言外之意是:其修改将不会被保留) 。若想要保留修改,则可以通过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 里程碑
总结来说:
- Git中的标签 , 都会以文件的形式存储在
.git/refs/tags
目录中 。 - 文件中记录的是
tag
标签的校验和(索引值) 。 - 通过索引值或者标签名可以查看该
tag
对象的内容 。 - tag对象的内容就包括他指向的
commit
。其实tag
对象就是对commit
对象的一个封装 。
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基础 — 36、标签tag
- 『现学现忘』Git基础 — 35、Git中删除文件
- 上海二手奢侈品店探店笔记,我的大牌日记 大牌包一直是我的心头爱
- 二 测试杂谈——一条SQL引发的思考
- 『现学现忘』Git后悔药 — 34、git commit --amend 命令
- 原神3.1百人一揆第二天人间之证明怎么用试用角色拿2000分
- 明日方舟铅踝精二专三材料需求要哪些
- 2021年二月份的天气预报_2021年二月份天气怎么样
- Morris 遍历实现二叉树的遍历
- 二 『现学现忘』Git后悔药 — 33、revert撤销