Git 学习(七)标签管理

Git 学习(七)标签管理

  

  发布版本时,通常会先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。取出某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

  Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支雷同,但分支可以移动,标签不可);创建和删除标签都是瞬间完成的。

  本文具体说明 Git 中是如何创建标签及操作标签的。

  

创建标签

Git 标签的命令很简单,首先简单浏览下方的 Git 命令:

git tag                        查看标签 

git tag <tag name> <commit id>  创建标签,若无commit id 默认当前

git tag -a <tag name> -m <msg>    创建标签,且添加标签信息

git show <tag name>                      查看标签具体信息

可做一些简单的实践操作,未创建过标签直接用  git tag  显示为空; 

在master分支上创建一个 v1.0 的标签,之后查看,如下

   打标签就是如此容易


默认标签是打在最新提交的commit上的(当前分支快照)。有时候,如果忘了打标签需要补打,需要找到历史提交的commit id,然后打上就可以了。

 

我们来操作下其他分支下打标签,切换至dev分支(若无,可新建该分支),若在该分支下开发出 v1.1版本,须打v1.1标签,可操作   git tag v1.1

  再次查看标签,可看到目前有两个标签了

切换至master分支,再次查看,可见 也有两个标签;标签是记录在整个Git库的,分支并不影响。

我们在master分支上 commit 两次,并打当前分支为 v2.0, 目前有三个标签了

然而现在,忽然想起之前有次commit需要打上 v1.2 的标签,得补打标签,那如何操作呢?得知道之前那次提交的commit id,  git log  如下

 得知 commitid  , 取前7位即可 ffe7d78

  注意,标签不是按时间顺序列出,而是按字母排序的。(v2.0标签就是打在v1.2之前的)

注意,标签不能重复打,若已存在,会提示 ,但允许同一commit id打多个标签

 

查看标签内容,如 git show v1.1 , 可见如下,可得知该标签的commit id及与当前版本的差异

 

创建标签时,可添加备注信息即如  

 

可用 -s  表示用PGP签名标签,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错;有关签名方式请自行搜索研究。

   

git tag -s <tag name> -m <msg>    创建签名标签,且添加标签信息

 

删除标签

标签若是打错可以直接删除,命令如下:

git tag -d <tag name> -m <msg>    删除标签

如删除 v1.2 标签    

创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。有关远程标签详见下文。

 

远程标签

正如前文所言,本地的标签不会推送到远程。来看下远程的标签显示,如下 github, 目前该库无任何tags

 

 

如果要推送标签到远程,使用命令如下:

git push origin <tag name>         推送某个标签至远程

 

git push origin --tags             推送所有标签至远程

 

 

本地库有三个标签 , 可使用单个标签推送,如下:

 

  推送后    

  全部推送 

 

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除;再从远程删除。删除命令也是push,但是格式如下:

 

git push origin :refs/tags/<tagname>             删除远程标签

 

     

  

posted @ 2015-12-01 14:13  feesland  阅读(2129)  评论(0编辑  收藏  举报