Git 使用教程(八):标签(版本号)

Git 使用教程(八):标签(版本号)

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

Git有commit,为什么还要引入tag?

“请把上周一的那个版本打包发布,commit号是6a5819e...”

“一串乱七八糟的数字不好找!”

如果换一个办法:

“请把上周一的那个版本打包发布,版本号是v1.2”

“好的,按照tag v1.2查找commit就行!”

所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。


一、创建标签

在Git中打标签非常简单,首先,切换到需要打标签的分支上:

$ git branch
* dev
  master
$ git checkout master
Switched to branch 'master'

然后,敲命令git tag <name>就可以打一个新标签:

$ git tag V1.0

可以用命令git tag查看所有标签:

$ git tag
V1.0

默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?

方法是找到历史提交的commit id,然后打上就可以了:

$ git log --pretty=oneline --abbrev-commit
3f063d8 (HEAD -> master, tag: V1.0, origin/master, origin/HEAD) merged bug fix 101
a8b5c5e fix bug 101
c0d98d6 conflict fixed
24f92f4 coship
1f9f1d5 money
f8c2cfa branch test
c6bdeb5 remove test.txt
c61ac4f add test.txt
35b7969 append GPL
136d10c add two lines
1186b5e creat a new file readme

比方说要对coship这次提交打标签,它对应的commit id是24f92f4,敲入命令:

$ git tag V0.9 24f92f4

再用命令git tag查看标签:

$ git tag
V0.9
V1.0

注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息:

$ git show V0.9
commit 24f92f49eb1b27eba2e38e667983e63830bc6041 (tag: V0.9)
Author: liumingjun <405702878@qq.com>
Date:   Fri Mar 23 16:06:04 2018 +0800

    coship

diff --git a/readme.txt b/readme.txt
index a4c0762..ced6222 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,3 +1,4 @@
 Git is a distributed version control system.
 Git is free software distributed under the GPL
 I love work
+coship coship and coship

可以看到,v0.9确实打在coship这次提交上。

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

$ git tag -a V0.1 -m "version 0.1 released" 1186b5e

用命令git show <tagname>可以看到说明文字:

$ git show V0.1
tag V0.1
Tagger: liumingjun <405702878@qq.com>
Date:   Fri Mar 23 17:51:54 2018 +0800

version 0.1 released

commit 1186b5ec3a492a85c085b7987b10c4be52e0381f (tag: V0.1)
Author: liumingjun <405702878@qq.com>
Date:   Thu Mar 22 20:21:57 2018 +0800

    creat a new file readme

diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..c81a21f
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1 @@
+This is Git
\ No newline at end of file


二、操作标签

如果标签打错了,也可以删除:

$ git tag -d V0.1
Deleted tag 'V0.1' (was fee78aa)

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

如果要推送某个标签到远程,使用命令git push origin <tagname>

$ git push origin V1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:lmj1117/test.git
 * [new tag]         V1.0 -> V1.0

或者,一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
To github.com:lmj1117/test.git
 * [new tag]         V0.9 -> V0.9

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

$ git tag -d V0.9
Deleted tag 'V0.9' (was 24f92f4)

然后,从远程删除。删除命令也是push,但是格式如下:

$ git push origin :refs/tags/V0.9
To github.com:lmj1117/test.git
 - [deleted]         V0.9
要看看是否真的从远程库删除了标签,可以登陆GitHub查看。



  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值