在使用 git 进行代码版本控制的时候,常常会使用打标签以示重要版本。如 open-mmlab/mmdetection 仓库中和分支(Branches)并列的 Tags 列,标识了不同 mmdetection 的重要版本更新,如 v1.0.0, v2.0.0, v3.0.0,目前最新版的是 v3.1.0。本篇介绍如何给自己的仓库打标签。

创建标签

为当前版本库创建标签有两种方法,一种是附注标签,一种是轻量标签。有时,我们想为历史版本创建标签,称为后期标签。

轻量标签很像一个不会改变的分支——它只是某个特定提交的引用。

而附注标签是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证。 通常会建议创建附注标签,这样你可以拥有以上所有信息。但是如果你只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。

附注标签

1
2
3
4
5
6
7
8
# 给当前版本库打上标签 v1.0,并附上说明文字
git tag -a v1.0 -m "version 1.0"

# 查看当前标签
git show v1.0

# 查看所有标签
git tag

轻量标签

1
2
# 给当前版本打上一个轻量标签
git tag v1.0-lw

后期标签

当我们想要给历史提交打标签,我们可以先查看历史提交的 hash 值,然后在指定该 hash 值给历史版本打标签

1
2
3
4
5
6
7
8
# 查看历史提交
git log

# 简约显示
git log --pretty=oneline

# 给某个历史版本大标签. hash 值可以只书写前几个字符就行,只要能区别处理
git tag -a v1.0 a116fee987

提交标签

当上面操作完成后,我们可以把本地的标签提交到远程仓库

1
2
3
4
5
# 提交指定标签
git push origin v1.0

# 提交所有本地标签,git push <remote> --tags
git push origin --tags

标签提交成功后,就可以在 github/gitlab 上的仓库上查看。

删除标签

如果标签打错了,那么可以删除标签

1
2
3
4
5
6
7
8
# 删除远程标签
git push origin --delete v1.0

# or,将冒号前面的空值推送到远程标签名,从而高效地删除它
git push origin :refs/tags/v1.0

# 删除本地标签
git tag -d v1.0

克隆指定分支

1
2
3
4
5
6
7
8
# 克隆分支 v0.1
git clone -b v0.1 ssh://git@github.com/jinzhongxu/vqa-clip2.git

# 如果想切换到主分支,那么可以这样
git switch -c main

# 撤销分支切换
git switch -

参考文献

  1. 2.6 Git 基础 - 打标签