git学习笔记(十四)--git的里程碑
前言:
tag这个词,印象里一直理解为标签,给什么东西贴个标签,通俗易懂又生动形象。
但在学习git的时候,在有些地方称之为里程碑,从版本控制的角度讲,里程碑这个词确实很到位,一站一站的路标,标记着整个项目的进展过程。
因此,这里就把tag翻译成里程碑来用,理解为标签我认为也没有问题,看个人。
tag的作用:
简单点说,tag就是就是对提交进行的命令。
因为提交是以ID形式出现的,数字必然没有有意义的字符好记,因此对于某些关键提交,我们可以打个tag,作为一个记录。
下面就开始tag的学习了:
1. tag的显示
git tag //显示tag
git tag -n[num] //显示最多n个tag
git log --decorate //在显示日志的时候显示tag
git describe //显示当前提交的tag,如果当前没有tag,显示该提交距离最近一次tag的距离和最近一次tag的名称
2. tag的创建
1. 轻量级tag --- git tag <tagname> <commitID>
2. 带提交tag --- git tag -m <msg> <tagname> <commitID>
如果不带commitID,则默认为当前HEAD指向的提交创建tag
查看tag的类型 --- git cat-file -t <tagname>
查看tag的内容 --- git cat-file -p <tagname>
(这些之前都已经学过,应该比较熟悉了)
(1)关于轻量级tag
轻量级tag的类型是commit,也就是其指向的是一个提交
轻量级tag的内容是该提交的内容
轻量级tag的创建过程没有记录,无法知道是谁创建的,在团队开发中不要使用
(2)带说明的tag
带说明的tag的类型是tag,指向的是一个tag对象
带说明的tag的内容是创建tag时的说明,以及对应的提交ID
带说明的tag会在版本库中建立一个新的对象,记录创建tag的用户,时间和创建说明。
ps---git对象库中四类对象全部说明完毕:
commit对象
tree对象
blob对象
tag对象
3. 删除tag
删除本地: git tag -d <tagname>
删除远程: git push <remote_url> :<tag_name>
删除远程版本库tag其实是将一个空值推送到远程版本库对应的引用中,也就是放弃了这个tag
注意:git并不对tag进行重命名,如果需要重命名,删除之前的tag,重建一个即可。
4. 共享tag
创建的tag,默认只在本地版本库中可见,不会因为对分支执行推送和将tag推送到远程版本库
如果需要推送,使用显式推送: git push origin <tagname>
用户从版本库执行pull操作,能够获取最新的tag
如果某个用户强制更新了远程版本库中的tag,则在其他用户执行pull时,不会获得自动更新
其他用户若想要获得更新的tag,必须执行显式拉回: git pull origin refs/tags/<tagname>:refs/tags/<tagname>
5.注意事项:
tag一旦递交的版本库,不要再修改,免得协同开发时大家的交互出现问题
tag的命名要有意义,且有延续性,风格统一
tag命名尽量使用正常的字符数字符号组合,不要使用一些特殊怪异的开头结尾方式,比如:
不要用"-"开头
不能连续出现两个".."
不要以"."作为结尾
不能使用特殊字符如"~" " " ":" "?"
浙公网安备 33010602011771号