Git 学习(七)标签管理

时间:2023-03-08 20:30:44

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  显示为空;

Git 学习(七)标签管理

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

Git 学习(七)标签管理

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

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

Git 学习(七)标签管理

切换至master分支,再次查看,可见 Git 学习(七)标签管理

我们在master分支上 commit 两次,并打当前分支为 v2.0, Git 学习(七)标签管理

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

得知 commitid  Git 学习(七)标签管理

Git 学习(七)标签管理

注意,标签不能重复打,若已存在,会提示 Git 学习(七)标签管理

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

Git 学习(七)标签管理

创建标签时,可添加备注信息即如   Git 学习(七)标签管理

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

Git 学习(七)标签管理

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

删除标签

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

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

如删除 v1.2 标签  Git 学习(七)标签管理

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

远程标签

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

Git 学习(七)标签管理

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

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

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

本地库有三个标签 Git 学习(七)标签管理

Git 学习(七)标签管理

Git 学习(七)标签管理

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

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

Git 学习(七)标签管理