runoops.com

Git 标签

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 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