本文共 2719 字,大约阅读时间需要 9 分钟。
在发布版本时,我们通常先在版本库打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来,所以标签也是版本库的一个快照.
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的. Git有了commit,为什么还要引入tag呢? 因为commit号是3b5819e...
一串乱七八糟的数字不好找.而tag可以根据需要任意命名,让人非常容易记住,它跟某个commit
绑定在一起. 在Git中打标签,首先,需要切换到需要打标签的分支上:
$ git branch* dev master$ git checkout masterSwitched to branch 'master'
然后,敲命令git tag <name>
就可以打一个标签:
$ git tag v1.0
可以用命令git tag
查看所有标签: $ git tagv1.0
默认标签是打在最新提交的commit上的,有时候,如果忘了打标签,需要给之前的提交打上标签,怎么办呢?
方法是找到历史提交的commit id,然后打上就可以了:$ git log --pretty=oneline --abbrev-commitb95bbf0 conflict fixedc2e47c0 & simple89cdc59 AND simplefae4e76 忽略不要的文件e151f7e add README.md3fafa4a remove test.txtc291807 add test.txt6d99443 boss8b33073 git tracks changes3557835 Revert "add aaa"9b4fd89 add aaa94bf088 append microService8cf77e4 add code for theme92b6075 add spring-boot sample5ad5c1f add a readme file
比方说要对& simple
这次提交打标签,它对应的commit id是c2e47c0
,敲入命令:
$git tag v0.8 c2e47c0
再用命令git tag
查看: $ git tagv0.8v1.0
这里需要注意,标签不是按时间顺序列出的,而是按字母排序的,可以用git show <tagname>
查看标签信息:
$ git show v0.8commit c2e47c06db550e03b2c19ee5247b03d949a10541Author: alan7cDate: Fri Mar 17 17:42:44 2017 +0800 & simplediff --git a/README.md b/README.mdindex 342d90d..0a28620 100644--- a/README.md+++ b/README.md@@ -1 +1,2 @@ # spring-boot-mongo
还可以创建带有说明的标签,用-a
指定标签名,-m
指定说明的文字:
$ git tag -a v0.9 -m "version 0.9 master" b95bbf0
用命令git show <gitname>
可以看到说明文字: $ git show v0.9tag v0.9Tagger: alan7cDate: Mon Mar 27 16:29:13 2017 +0800version 0.9 mastercommit b95bbf0ac897b2d88fa4bcf0308913f624d566c7Merge: c2e47c0 89cdc59Author: alan7c Date: Fri Mar 17 17:48:28 2017 +0800 conflict fixed
小结
git tag <name>
用于创建一个标签,默认为HEAD
,也可以指定一个commit id;git tag -a <tagname> -m "balabalalbala.." commit id
可以指定标签信息;git tag
可以查看所有标签.如果标签打错了,也可以删除标签:
$ git tag -d v0.8Deleted tag 'v0.8' (was c2e47c0)
因为创建的标签都是只存储在本地,不会自动推送到远程,所以打错的标签也可以在本地安全删除.
如果要推送某个标签到远程,使用命令git push origin <tagname>
: $ git push origin v1.0Total 0 (delta 0), reused 0 (delta 0)To git@github.alanluochong/spring-boot-test.git * [new tag] v1.0 -> v1.0
或者一次性推送全部尚未推送到远程的本地标签:
$ git push origin --tagsCounting objects: 1, done.Writing objects: 100% (1/1), 554 bytes, done.Total 1 (delta 0), reused 0 (delta 0)To git@github.com:michaelliao/learngit.git * [new tag] v0.2 -> v0.2 * [new tag] v0.9 -> v0.9
如果标签已经推送到远程,要删除远程标签就麻烦一点,但是格式如下:
$ git push origin :refs/tags/v0.9To git@github.com:alanluochong/spring-mongo-test.git - [deleted] v0.9
小结
git push origin <tagname>
可以推送一个本地标签到远程;git push origin --tags
可以推送全部未推送过的本地标签;git tag -d <tagname>
可以删除一个本地标签;git push origin :refs/tags/<tagname>
可以删除一个远程标签;转载地址:http://cyioi.baihongyu.com/