5. 标签操作
标签的概念
鉴于在版本控制当中使用提交对象哈希值那样一长串字符并不容易记忆。Git 提供了可以将提交对象哈希值 起一个别名的功能,这个别名就是标签(TAG)。标签对应一个提交对象的哈希值。
在项目进行到一个关键节点时进行的提交,我们通常为本次提交打一个标签,以示重要,也方便一个查找和定位当前提交。
通常这个标签用来定义版本号,用于版本的迭代。
Git 支持两种标签:
- 轻量标签(lightweight)
- 它只是某个特定提交的引用(本文不讲解)。
- 附注标签(annotated)
- 是存储在 Git 数据库中的一个完整对象,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息。
本文只讲解附注标签。
创建标签
命令格式
git tag -a [标签名] [提交对象ID] [-m "提交信息"]
说明:
- 提交对象ID可以不写,默认标签表示最新的提交位置。
- 提交信息也可以不写,但是最好添加。
示例:
使用 git tag -a v0.1 8cb34d1 -m "版本 0.1" 命令为 my_project 项目中的第一次提交打一个标签 v0.1。使用 git tag -a v0.2 -m "版本 0.2" 命令为第二次提交打一个标签 v0.2。
weimingze@mzstudio:~/my_project$ git log --oneline
5dcccb0 (HEAD, master) 魏明择在当前项目中修改了README.md文件,并添加了website.txt文件
8cb34d1 魏明择在当前项目中添加了 README.md文件
weimingze@mzstudio:~/my_project$ git tag -a v0.1 8cb34d1 -m "版本 0.1"
weimingze@mzstudio:~/my_project$ git tag -a v0.2 -m "版本 0.2"
weimingze@mzstudio:~/my_project$ git tag
v0.1
v0.2
上述使用 git tag 命令时查看当前仓库有哪些标签。
查看标签
命令格式
# 查看标签列表
git tag
# 查看标签详细信息
git show [tag_name]
示例:
查看标签 v0.1 的详细信息
weimingze@mzstudio:~/my_project$ git show v0.1
tag v0.1
Tagger: weimingze <auth@weimingze.com>
Date: Sun Jan 11 22:28:05 2026 +0800
版本 0.1
commit 8cb34d10643636d04286624adaa55b6a3967ab9e (tag: v0.1)
Author: weimingze <auth@weimingze.com>
Date: Sat Jan 10 17:15:05 2026 +0800
魏明择在当前项目中添加了 README.md文件
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d8b46cf
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# Git 教程^M
上述信息列出了标签 v0.1 标签的详细信息,也列出了对应的提交对象的信息,同时显示了本次提交对象和之前版本的不同之处。
回退到某个标签节点
命令格式
git restore --source=标签名
示例:
使用标签将 v0.1 的版本恢复到工作区。然后再回复 v0.2 的版本到工作区。
weimingze@mzstudio:~/my_project$ git restore --source=v0.1 .
weimingze@mzstudio:~/my_project$ ls
README.md
weimingze@mzstudio:~/my_project$ git restore --source=v0.2 .
weimingze@mzstudio:~/my_project$ ls
README.md website.txt
删除标签
命令格式:
git tag -d [标签]
示例
删除 my_project 项目中的 v0.1 标签和 v0.2 标签
weimingze@mzstudio:~/my_project$ git log --oneline
5dcccb0 (HEAD, tag: v0.2, master) 魏明择在当前项目中修改了 README.md 文件,并添加了 website.txt 文件
8cb34d1 (tag: v0.1) 魏明择在当前项目中添加了 README.md文件
weimingze@mzstudio:~/my_project$ git tag -d v0.1
Deleted tag 'v0.1' (was ec4f821)
weimingze@mzstudio:~/my_project$ git tag
v0.2
weimingze@mzstudio:~/my_project$ git tag -d v0.2
Deleted tag 'v0.2' (was abcb88d)
weimingze@mzstudio:~/my_project$ git tag
weimingze@mzstudio:~/my_project$ git log --oneline
5dcccb0 (HEAD, master) 魏明择在当前项目中修改了 README.md 文件,并添加了 website.txt 文件
8cb34d1 魏明择在当前项目中添加了 README.md文件
练习:
给你的 Git 提交信息打标签,然后删除这些标签。