今天把git基础部分写完,前面几篇文章大致介绍了一下最最基础的用法,下面是最后一个基础性的用法了,就是git的标签


    同大多数的VCS一样,git当然也可以对某一时刻的版本打上标签,来对于发布版本加以特殊的标记,下面我们介绍一下git tag的用法

    1.列出已有的标签

      git tag

      这样就可以了,如果项目中有打过标签,会一一列出,类似下面

      $ git tag

        v0.1

        v1.1

       ...

       标签的顺序不能说明任何问题,只是简单的按照基本的顺序排列,如果你对某一个特殊的标签版本感兴趣,可以这样 git tag -l 'v1.2.4.*',这样也会列出这个版本或许可能存在的小版本,v1.2.4.1、v1.2.4.2,......

 

    2.新建标签

      git的标签分为两种:轻量级和附注级

      轻量级很好理解,就是一个不会变化的,指向特定提交对象的一个引用

      附注级就不一样了,它是存储在仓库中的一个独立对象,有其自身的校验和信息,有很多的备注的说明,当然使用标签建议使用附注级的,以便保留相关信息

      含附注的标签建立:git tag -a v1.8 -m 'version 1.8',参数 -a 就是建立附注级的标签,-m也是对标签对象的说明,如果你不加-m,git会启动文本编辑器让你添加,就像提交代码一样,建立好之后,git tag查看一下,当然还可以使用git show v1.8来查看更加详细的信息


    3.签署标签

      如果你有自己的私钥,还可以用GPG来签署标签,把-a换成-s就可以了

      git tag -s v1.8 -m 'my signed 1.8 tag'  后面介绍怎么验证已经签署的标签


    4.轻量级标签

      什么参数都不用啦,直接加标签版本就可以


     上面两个git show的信息好好对比一下


    5.验证标签

      使用git tag -v tag-name

      此命令会调用GPG来验证签名,你需要有签署者的公钥,没有就会报错了


    6.后期加注标签

      git log --pretty=oneline 还记得吧,列出每次的提交简单信息,在某次提交后,应该加标签的,结果你忘了,没有关系,现在加也不晚

      比如在这次提交 df8789dfad9ad9f989ad8f98a9988a89a9d8  update all the configure 添加标签,git tag -a v1.8df8789  加上校验和提交对象的前几个字符就可以了


    7.分享标签

      默认情况下,git push不会把标签传送到远端服务器,需要用命令显视操作,类似推送代码到远端服务器,git push origin tag-name

      比如,git push origin v1.5

      如果需要推送你建立的所有标签,加上--tags

      git push origin --tags,这样所有的标签就会都推送到该分支上了,这样其他人,克隆共享仓库或者拉去数据后,也可以看到这些标签了


     两个技巧

     1.自动补全

       使用linux系统的,大家都一定在自动补全的功能,话说,git是linus组织人员开发的,git的自动补全,也很自然而然,git源代码里面有个contrib/completion目录,进去会看到一个git-completion.bash文件,讲此文件复制到你自己的用户主目录中,cp git-completion.bash ~/.git-completion.bash,并在你的.bashrc文件中加入source ~/.git-completion.bash;当然,如果你是系统管理员,想让这个功能在所有用户下都生效,可以放在/etc/bash-completion.d/目录中,重启一个shell,或者source一下,试试吧,很好用

     2.命令别名

       这个原理一样,linux中比如我们使用ll,就相当于使用ls -l,当然git一定要具备了,看下面

       git config --global alias.co checkout

       git config --global alias.ci commit

       git config --global alias.st status

       当你在使用git commit就可以用git ci代替了,很方便吧

       还有更猛的,你可以创造命令,使用git没有,比如:

       git config --global alias unstage 'reset HEAD --'  这样的话,你就创造了一个命令了,git unstage,所以现在git unstage file1 = git reset HEAD file1,来取消暂存文件

       这两个技巧是常用的,提高工作效率,请尽情使用