You are here

Git基础 - 标签 - 掌握Git - 6

Submitted by Peniel on Thu, 03/31/2016 - 10:50
Undefined

常常使用标签来表示发布版本,在这里会学习如何显示已有标签,创建新的标签和不同标签的区别。

显示已有标签

非常简单明了,git tag

$ git tag
v0.1
v1.3

使用字母顺序显示。还可以搜索标签。如果有很多标签可以进行搜索。

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5

添加标签

git使用两种标签:lightweight和annotated

lightweight标签就像一个不变的分支,指向一个特别的提交。

annotated标签在git里面保存完整的数据,他们经过了签名,包括名字、邮箱、日期,说明,推荐使用annotated标签,如果只是临时需要一个标签可以使用lightweight标签

Annotated标签

简单的方式是使用-a

$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4

可以使用git show查看标签

$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4

Lightweight标签

不需要使用-a -m参数

$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

如果使用git show的时候显示只是那个提交的内容

$ git show v1.4-lw
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

之后添加标签

也可以在提交之后对某个提交添加标签

$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme

现在如果是xian给

964f16d36dfccde844893cac5b347e7b3d44abbc

添加标签

$ git tag -a v1.2 9fceb02
$ git tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5

$ git show v1.2
tag v1.2
Tagger: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Feb 9 15:32:16 2009 -0800

version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon <mchacon@gee-mail.com>
Date:   Sun Apr 27 20:43:35 2008 -0700

    updated rakefile
...

分享标签

默认的git push不会把标签推送到远程。需要明确告诉要推送标签。就像分享远程分支一样 git push origin [tagname]

$ git push origin v1.5
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done.
Total 14 (delta 3), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
 * [new tag]         v1.5 -> v1.5

如果有很多标签想一次性推送,使用--tags

$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
 * [new tag]         v1.4 -> v1.4
 * [new tag]         v1.4-lw -> v1.4-lw

checkout 标签

你不可以签出标签,他们无法移动。如果想使用某个版本,可以使用标签创建一个分支 git checkout -b [branchname] [tagname]

$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'

当然如果对version进行修改并提交会和v2.0.0有点不同。需要小心。

Tags:

Category: