发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
一、创建标签
(1)命令 git tag v1.0(标签名)
打一个新标签,在目前最新的版本上。
$ git tag v1.0
(2)命令 git tag
查看所有标签
$ git tag
v1.0
(3)命令 git tag commit_id
如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,可以使用找到需要打标签的commit_id,然后打标签。
abafad6 (HEAD -> master, tag: v1.0, origin/master) merged bug fix 101
91a4683 fix bug 101
f4961d3 merge with no-ff
0e13ee2 add merge
47e9b49 conflict fixed
6f306dd &simple
cd8fa2d AND simple
ea4444f branch text
53e89d7 remove test.txt
ed0dc67 add test.txt
e87225d git tracks changes 1
fe8a3cb git tracks changes
52edc0e understand how stage works
9178f48 append GPL
84cca88 add distributed
bdcbe49 wrote a readme file
比如要给add merge打标签,其对应的commit_id 是0e13ee2,则打标签的命令如下:
git tag v0.9 0e13ee2
查看标签历史,git tag可以看见
$ git tag
v0.9
v1.0
(4)命令git show <tagname>
查看历史标签信息
li**@LAPTOP-MU**9V MI** ~/learngit (master)
$ git show v0.9
commit 0e13ee214fda9079dc00873b13594e822de43b7f (tag: v0.9)
Author: Li** <8507**5@qq.com>
Date: Wed Mar 8 16:28:27 2023 +0800
add merge
diff --git a/readme.txt b/readme.txt
index 241c79a..5b67ce1 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,3 +1,4 @@
+Edit on dev branch.
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
(5)命令git tag -a <tagname> -m " " <commit_id>
创建带有说明的标签,用-a指定标签名,-m指定说明文字。
$ git tag -a v0.1 -m "version 0.1 released" 9178f48
查看标签记录
$ git show v0.1
tag v0.1
Tagger: Li** <8507**5@qq.com>
Date: Thu Mar 9 15:58:06 2023 +0800
version 0.1 released
commit 9178f48947263ebeb3535bb46ae14f570b3849f2 (tag: v0.1)
Author: Li** <8507**5@qq.com>
Date: Sat Mar 4 17:10:37 2023 +0800
append GPL
diff --git a/readme.txt b/readme.txt
index 013b5bc..99e0e11 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
Git is a distributed version control system.
-Git is free software.
\ No newline at end of file
+Git is free software distributed under the GPL.
\ No newline at end of file
创建标签总结:
命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
二、操作标签
(1)命令git tag -d <tagname>
删除标签,因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
$ git tag -d v0.1
Deleted tag 'v0.1' (was d0c1eb0)
(2)命令git push origin <tagname>
推送某个标签到远程。
$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:lily-wang0524/learngit.git
* [new tag] v1.0 -> v1.0
(3)命令git push origin --tags
一次性推送全部尚未推送到远程的本地标签
$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:lily-wang0524/learngit.git
* [new tag] v0.9 -> v0.9
(4)删除远程标签git push origin :refs/tags/<tagname>
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除,然后,从远程删除。
1)删除本地标签
$ git tag -d v0.9 #删除本地标签
Deleted tag 'v0.9' (was 0e13ee2)
2)删除远程标签
$ git push origin :refs/tags/v0.9 #删除远程标签v0.9
To github.com:li**-wa***/learngit.git
- [deleted] v0.9
看看是否真的从远程库删除了标签,可以登陆GitHub查看。可以看见v0.9已经被删除。