文章目录
- 1.简介
- 2.格式
- 3.选项
- 4.示例
- 参考文献
1.简介
同大多数 VCS 一样,Git 也可以对某一时间点的版本打上标签,用于版本的发布管理。
一个版本发布时,我们可以为当前版本打上类似于 v.1.0.1、v.1.0.2 这样的 Tag。一个 Tag 指向一个 Commit ID,同时还可以为 Tag 添加备注,如当前的版本功能。
2.格式
git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e][(--trailer <token>[(=|:)<value>])…]<tagname> [<commit> | <object>]
git tag -d <tagname>…
git tag [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>][--points-at <object>] [--column[=<options>] | --no-column][--create-reflog] [--sort=<key>] [--format=<format>][--merged <commit>] [--no-merged <commit>] [<pattern>…]
git tag -v [--format=<format>] <tagname>…
3.选项
-a
--annotate
创建一个带注释的标签。-m <msg>
--message=<msg>
与 -a 选项一起使用,用于指定标签的注释。-l
--list
列出所有标签,可以通过模式过滤标签。-f
--force
强制创建标签,如果标签已经存在,则覆盖它。--sort=<key>
用于对列出的标签进行排序。
常用的排序键有:
creatordate:按标签的创建日期排序(从旧到新)。
refname:按标签名称(即引用名称)进行字母顺序排序。
前面加上减号 -creatordate 和 -refname 表示降序。
4.示例
(1)新建标签。
Git 标签有两种类型:轻量级的(lightweight)和含附注的(annotated)。
轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。一般我们都建议使用含附注型的标签,以便保留相关信息;当然,如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。
注意,如果一个代码仓库有多个目录,每个目录是单独的模块,那么打 tag 时按 modulename/v1.0.0 这种方式,可以解决多目录按 tag go get。
# 轻量级标签
git tag <tagname># 含附注的标签
git tag -a <tagname> -m <comment># 示例
git tag v1.0
git tag -a v1.1 -m "my version 1.1"
(2)将本地标签推送到远端。
# 推送本地指定标签
git push origin <tagname># 推送本地所有标签
git push origin --tags
(3)查看标签。
# 查看所有本地标签
git tag
v1.1.0
v1.1.1# 按照创建时间降序排列
git tag --sort=-creatordate# 按照创建时间升序排列
git tag --sort=creatordate# 查看所有远端标签
git ls-remote --tags# 模糊查询标签。支持使用通配符 *
git tag -l <tagname pattern>git tag -l "*.1.1"
v1.1.1# 查看标签详细信息
git show <tagname>
执行 git tag 命令进入交互模式列出所有标签后,可以按下 q 键退出交互。
(4)删除标签。
# 删除本地标签
git tag -d <tagname># 删除远端标签
git push origin (-d | --delete) <tagname>
git push origin :refs/tags/<tagname>
(5)重命名标签。
无重命名标签选项,只能先删除然后新建。
git tag -d <tagname> && git tag <tagname>
参考文献
Git - git-tag Documentation