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命名尽量使用正常的字符数字符号组合,不要使用一些特殊怪异的开头结尾方式,比如:

    不要用"-"开头

    不能连续出现两个".."

    不要以"."作为结尾

    不能使用特殊字符如"~" " " ":" "?"

 

 

 

 

 

 

posted on 2012-07-30 10:54  melburg  阅读(581)  评论(0)    收藏  举报