什么是tag
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
创建标签
- 切换到要打标签的分支上
git branch
git checkout master
- 使用命令打标签
git tag v1.0
注意:标签默认只会打到最新提交的commit上
关于其他
查看打过的标签和具体打了的标签中的内容
$ git tag
show
v0.9
v1.0
Administrator@WIN-E2URN8GKKHJ MINGW64 ~/Desktop/learngit (master)
$ git show v0.9
commit 65a02332c94f85bf3e4eb79eeeeb5a0105ee0596
Author: wangguowei <wgw1206798585@vip.qq.com>
Date: Sat Oct 15 11:15:06 2022 +0800
add merge
diff --git a/readme.txt b/readme.txt
index f10249a..4baaacc 100644
--- a/readme.txt
+++ b/readme.txt
@@ -3,3 +3,4 @@ Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
Creating a new branch is quick AND simple.
+add merge
\ No newline at end of file
小结
-
命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
-
命令git tag -a -m "blablabla…"可以指定标签信息;
-
命令git tag可以查看所有标签。
操作标签
删除标签
在使用命令的时候使用option将命令的作用发生改变
$ git tag
show
v0.9
v1.0
Administrator@WIN-E2URN8GKKHJ MINGW64 ~/Desktop/learngit (master)
$ git tag -d v0.9
Deleted tag 'v0.9' (was 65a0233)
Administrator@WIN-E2URN8GKKHJ MINGW64 ~/Desktop/learngit (master)
$ git tag
show
v1.0
将标签推送到远程
因为创建的标签都只存储在本地,不会自动推送到远程
。所以,打错的标签可以在本地安全删除。
- 如果要推送某个标签到远程,使用命令git push origin :
$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
* [new tag] v1.0 -> v1.0
- 或者,一次性推送全部尚未推送到远程的本地标签:
$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
* [new tag] v0.9 -> v0.9
将标签从远程库删除
- 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
$ git tag -d v0.9
Deleted tag 'v0.9' (was f52c633)
- 然后,从远程删除。删除命令也是push,但是格式如下:
$ git push origin :refs/tags/v0.9
To github.com:michaelliao/learngit.git
- [deleted] v0.9