如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。
比如说,我们想为我们的 runoops 项目发布一个"1.0"版本。 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)"v1.0"的标签。
-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 我推荐一直创建带注解的标签。
标签语法格式:
git tag <tagname>
例如:
git tag v1.0
-a 选项可以添加注解:
$ git tag -a v1.0
当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。
现在,注意当我们执行 git log 时,我们可以看到我们的标签了:
$ git log
commit 0b2e1eef1bca1a8ffc4acdc977afd4cca0cb8b1e (HEAD -> main, tag: v1.0, origin/develop, develop)
Author: xxx
Date: Fri Nov 8 02:30:46 2024 +0000
add index file
commit 1f65dce06fd9781bca23bd73fe503647a30455f6 (origin/main)
Author: xxx
Date: Fri Nov 8 02:28:45 2024 +0000
first commit
如果我们忘了给某个提交打标签,又将它发布了,我们可以给它追加标签。
例如,假设我们发布了提交 1f65dce06fd9781bca23bd73fe503647a30455f6,但是那时候忘了给它打标签。 我们现在也可以:
$ git tag -a v0.1 1f65dce06fd9781bca23bd73fe503647a30455f6
$ git log --oneline --decorate --graph
* 0b2e1ee (HEAD -> main, tag: v1.0, origin/develop, develop) add index file
* 1f65dce (tag: v0.1, origin/main) first commit
如果我们要查看所有标签可以使用以下命令:
$ git tag
v0.1
v1.0
推送标签到远程仓库
默认情况下,git push 不会推送标签,你需要显式地推送标签。
git push origin <tagname>
推送所有标签:
git push origin --tags
删除轻量标签
本地删除:
git tag -d <tagname>
远程删除:
git push origin --delete <tagname>
附注标签
附注标签存储了创建者的名字、电子邮件、日期,并且可以包含标签信息。附注标签更为正式,适用于需要额外元数据的场景。
创建附注标签语法:
git tag -a <tagname> -m "message"
例如:
git tag -a <tagname> -m "runoops.com标签"
PGP 签名标签命令:
git tag -s <tagname> -m "runoops.com标签"
查看标签信息:
git show <tagname>
实例
以下是一个综合示例,演示如何创建、查看、推送和删除标签。
创建轻量标签和附注标签:
git tag v1.0 git tag -a v1.1 -m "runoops.com标签"
查看标签和标签信息:
git tag git show v1.1
推送标签到远程仓库:
git push origin v1.0 git push origin v1.1 git push origin --tags # 推送所有标签
删除标签
本地删除:
git tag -d v1.0
远程删除:
git push origin --delete v1.0