创建标签
❯ git tag v1.0
标签名称可以是任何内容,但通常标签用于版本标记。
此时再查看日志,就会在相应的提交记录上看到标签:

查看分支拥有的标签:
❯ git tag
v1.0
通过上述方式创建的标签是一个轻量级标签,如果查看标签会发现仅包含提交记录的信息,但并不包含标签本身的信息(比如标签是谁添加的、标签的添加时间等):
❯ git show v1.0
commit 26eb547f1dc13719c5f8785e5161d7e988578862 (HEAD -> main, tag: v1.0)
Author: icexmoon <707488229@qq.com>
Date: Fri Jan 30 15:05:29 2026 +0800
add classroom
diff --git a/ch1/demo/src/main/java/cn/icexmoon/learngit/demo/entity/ClassRoom.java b/ch1/demo/src/main/java/cn/icexmoon/learngit/demo/entity/ClassRoom.java
new file mode 100644
index 0000000..fd14e78
--- /dev/null
+++ b/ch1/demo/src/main/java/cn/icexmoon/learngit/demo/entity/ClassRoom.java
@@ -0,0 +1,16 @@
+package cn.icexmoon.learngit.demo.entity;
+
+import lombok.Data;
相应的,可以添加一个注释型标签(可以看作是更正式的标签):
git tag -a v1.1 -m 'add some entities'
这里的
-m是标签的备注信息,如果不指定也会弹出 vim 编辑器让用户添加。
这个标签包含标签相关的信息:

追加标签
如果要为之前的某个提交记录添加标签:
❯ git log --pretty=oneline
ce57e0e5620af481bc15004e8759b6b5da3e7f02 (HEAD -> main, tag: v1.1) add entities
26eb547f1dc13719c5f8785e5161d7e988578862 (tag: v1.0) add classroom
51fc7ad00f1fba422f28d291fcb707be22b1f566 add user module
1e074deece41d1423ea615599e125fecbc3df421 (origin/main, origin/HEAD) move test
59ef81c4e3694ffb9410313bdd47212bc8c8fd35 delete file
9d6f179c868cbaf41b65ea40edf07817a1e9c607 test
b31900fa8a5956ffc4215171baf9836bc576620b (origin/release/260126, release/260126) hello3
添加标签:
git tag -a v0.9 b31900fa8a5956ffc4215171baf9836bc576620b

共享标签
默认情况下,标签不会在推送分支时被提交到远程仓库,也就是说标签只存在于本地分支,对于其他人都是不可见的。
如果需要将标签推送到远程仓库:
❯ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To github.com:icexmoon/learn-git.git
* [new tag] v1.0 -> v1.0
可以在远程仓库看到标签:

如果要将分支上的所有标签都推送到远程仓库:
❯ git push origin --tags
Enumerating objects: 2, done.
Counting objects: 100% (2/2), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 280 bytes | 280.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To github.com:icexmoon/learn-git.git
* [new tag] v0.9 -> v0.9
* [new tag] v1.1 -> v1.1
删除标签
如果要删除本地分支的标签:
❯ git tag -d v0.9
Deleted tag 'v0.9' (was d801fb7)
如果要删除远程仓库上的标签:
❯ git push origin --delete v0.9
To github.com:icexmoon/learn-git.git
- [deleted] v0.9
签出标签
可以像签(checkout)出分支那样签出标签,即让工作区的代码变成标签对应的代码版本:
❯ git checkout v1.0
Note: switching to 'v1.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 26eb547 add classroom
提示信息告诉我们此时处于 HEAD 分离状态(detached HEAD),此时任何对文件的添加和修改操作都不属于任何分支,也就无法进行提交。因此我们通常需要在签出到特定标签后创建一个分支,执行后续代码修改。方便的是,这点在提示信息中也有提及,只需要按提示操作:
❯ git switch -c temp-v1.0
Switched to a new branch 'temp-v1.0'
The End.

文章评论