git 的使用(7)-标签管理

前言:

学习到这里,基本上git 里面的大部分都已经学习的差不多,剩下的就是熟能生巧,多多练习掌握的事情了。但是在分支管理里面,还有一个比较重要,也是很常见的就是"标签",标签是有别于svn 中一个比较特殊的东西。比较好用,且易于管理和体现。这一节就来学习一下。

创建标签

再说创建标签之前,我们先来说一下标签是啥?

发布一个版本的时候,我们通常先在版本库里打一个标签,这样,就唯一确定了打标签时刻的版本了。有点类似于快照,在VM和PS里面我们也可以打快照,这样,以后就可以随时回到这个状态,都不会丢失。同样在git 中打了标签后,将来无论在什么时候,这个标签的所有的历史版本信息都能取出来,不会丢失。

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

我们接下来就来学习如何创建一个新的标签:

git tag name命令,就可以在某一个分支上打上一个标签了:

$ git tag v1.0
ok,这样就在我们当前的master分支上打好了一个标签了。也是没有任何反馈的,说明已经打好了。

这个时候,我们可以 git tag 命令 ,查看找个分支上所有的标签:

$ git tag
v1.0
显示,这个分支有一个分支v1.0,就是我们刚刚创建的。

默认的创建标签,是在分支的的HEAD上创建的,也就是最新的提交上面。我们可以通过git show tag_name 命令来查看这次标签的详细信息:

$ git show v1.0
commit bf30f1f74189bd33ba4a6c12c3184c7c4879a011
Merge: ae9e663 edf15c5
Author: iyangyi <yangyiphper@sina.cn>
Date:   Fri Oct 10 10:16:01 2014 +0800

    confict

diff --cc README.md
index 5ffe0f3,2b24d0a..c7e41e4
--- a/README.md
+++ b/README.md
@@@ -2,4 -2,4 +2,8 @@@ Git is a distributed version control sy
  Git is free software. it is a good tool. distributed under the GPL.
  Git has a mutable index called stage.
  Git tracks changes.
++<<<<<<< HEAD
 +Creating a new branch is quick & simple.
++=======
+ Creating a new branch is quick AND simple.
++>>>>>>> dev


那么,可不可不在HEAD上打标签,在前几个commit上打呢?当然可以了。同样也是这个命令,只不过后面多加一个commit_id :

git tag tag_name commit_id  命令来完成在一个commit上打标签:

$ git tag v1.1 5575424
我们也可以给本次的提交加上说明,这样更好识别:$ git tag -a v1.2 -m "version 1.2 released"

$ git tag -a v1.2 -m "version 1.2 released"

$ git show v1.2
tag v1.2
Tagger: iyangyi <yangyiphper@sina.cn>
Date:   Mon Oct 20 14:39:52 2014 +0800

version 1.2 released

commit 50bf49c458e272c9729c6def589917348c61b136
Author: iyangyi <yangyiphper@sina.cn>
Date:   Mon Oct 13 15:27:11 2014 +0800

    ddd

diff --git a/test.txt b/test.txt
index e4c6ef0..2c7bdfb 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
 this file is will delete
+hahahhahahah

操作标签

上面我们学习了如何创建标签等一些基本操作,创建错了,或者没用了,我们应该是可以删除它的,用 git tag -d tag_name   命令来删除。

$ git tag -d v1.2
Deleted tag 'v1.2' (was f04187d)
提示我们删除成功。

标签也是一个独特的分支,也是可以同步到远程的,如果我们在本地的标签已经ok了。那么如何,推送呢。也是 push 命令,
git push origin tag_name 命令,和push 分支有一点点不同。我们现在来推送下:

$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:iyangyi/learngit.git
 * [new tag]         v1.0 -> v1.0
提示我们成功了。我们去github上看一下,果真推送成功了。

那我们,我们本地有很多标签,一个一个推送,难免有些慢和繁琐。我们可以一次性全部推送嘛?当然:

git push origin --tags 命令,全部标签都被推送了。

$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 203 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:iyangyi/learngit.git
 * [new tag]         v1.1 -> v1.1
好。它将我们剩下的一个v1.1标签也推上去了。

如果,我们想删除远程的标签,咋搞,本地的删除很简单,远程的删除就有点麻烦了。我们要先删除本地的,再删除远程的:
git push origin :refs/tags/v1.1 (注意:origin 后面必须加个空格,再加冒号)

$ git tag -d v1.1
Deleted tag 'v1.1' (was 5575424)

$ git push origin :refs/tags/v1.1
To git@github.com:iyangyi/learngit.git
 - [deleted]         v1.1

小结

  • 命令git tag name用于新建一个标签,默认为HEAD,也可以指定一个commit id;

  • git tag -a tagname -m "blablabla..."可以指定标签信息;

  • 命令git tag可以查看所有标签;

  • 命令git push origin tagname可以推送一个本地标签;

  • 命令git push origin --tags可以推送全部未推送过的本地标签;

  • 命令git tag -d tagname可以删除一个本地标签;

  • 命令git push origin :refs/tags/tagname可以删除一个远程标签。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值