但是如上操作存在一个巨大的风险,我们修改过的代码是
master
主分支上的,一旦修改过的代码出现问题,将可以导致整个代码出问题 。所以,我们一般不会修改master
主分支上的代码 。那应该怎么办?- Git将标签定义为与分支同级别的概念,它不仅是一个提交的别名 。
- Git允许程序员使用分支切换命令
git checkout
,将代码转向标签所指定的版本 。
# 1.查看当前版本库分支L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git tagv1.0v2.0# 2.切换到v1.0标签上L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github (master)$ git checkout v1.0Note: switching to 'v1.0'.You are in 'detached HEAD' state. You can look around, make experimentalchanges and commit them, and you can discard any commits you make in thisstate without impacting any branches by switching back to a branch.If you want to create a new branch to retain commits you create, you maydo so (now or later) by using -c with the switch command. Example:git switch -c <new-branch-name>Or undo this operation with:git switch -Turn off this advice by setting config variable advice.detachedHead to falseHEAD is now at 69fc420 第二次提交,添加v2版内容L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github ((v1.0))$
如上,命令执行完毕,系统给出了很多的提示,该提示的总体意思为:当前处于“分离头指针”状态,在该状态下用户的任何修改与提交对任何的分支都没有影响(言外之意是:其修改将不会被保留) 。若想要保留修改,则可以通过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/shenghuo/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/shenghuo/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 里程碑
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2023年10月6日买家具好不好 2023年农历八月廿二宜买家具吗
- 2023年农历八月廿二宜安装门框吗 2023年10月6日安装门框好吗
- 2023年10月6日安机器黄道吉日 2023年农历八月廿二宜安机器吗
- 2023年10月6日买车行吗 2023年农历八月廿二宜买车吗
- 2023年10月6日安装家电好不好 2023年农历八月廿二安装家电吉日
- 2023年农历八月廿二宜安装窗帘吗 2023年10月6日安装窗帘黄道吉日
- 2023年农历八月廿二宜买房吗 2023年农历八月廿二买房吉日
- 2023年10月6日安装机器吉日一览表 2023年农历八月廿二宜安装机器吗
- 2023年10月6日房屋过户行吗 2023年农历八月廿二房屋过户吉日
- 2023年农历八月廿二宜踏青吗 2023年10月6日是踏青的黄道吉日吗