文档章节

10 Git —— 标签管理

小儿
 小儿
发布于 02/22 00:43
字数 1058
阅读 8
收藏 0

10 Git —— 标签管理

本节内容:

命令git tag <tagname>用于新建一个标签,默认为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>可以删除一个远程标签。

一 、创建标签

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git branch
  dev
* master
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

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

git tag v1.0

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git tag
v1.0
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

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

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git log --pretty=oneline --abbrev-commit
99cd95c (HEAD -> master, tag: v1.0, origin/master, origin/HEAD) 再来点
93c5700 再写点内容
0ba4267 merged bug fix openfire
c0e8f25 dev to master
afd1966 merge with no-ff
8faa495 add 学习
615c264 conflict fixed
426ee67 add 我要提交
8b01682 update readme.md
fca856d branch test
38e1bd3 Initial commit
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

比方说要对merged bug fix openfire这次提交打标签,它对应的commit id是0ba4267,敲入命令:

git tag v_0.8 0ba4267

再用命令git tag查看标签:

lwenhaodeMacBook-Pro:TestGit lwenhao$ git tag
v1.0
v_0.8
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git show v_0.8
commit 0ba42671a829071913a6b74d5c642fdf7e1c2531 (tag: v_0.8)
Merge: afd1966 c0e8f25
Author: lwenhao <my@lwenhao.com>
Date:   Thu Feb 21 18:59:22 2019 +0800

    merged bug fix openfire

lwenhaodeMacBook-Pro:TestGit lwenhao$ 

可以看到,v_0.8确实打在 merged bug fix openfire这次提交上。

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

git tag -a v0.1 -m "version 0.1" 38e1bd3

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git show v0.1
tag v0.1
Tagger: lwenhao <my@lwenhao.com>
Date:   Fri Feb 22 00:32:01 2019 +0800

version 0.1

commit 38e1bd3e0600fac25d7e48b1493b5188e1a348f6 (tag: v0.1)
Author: lwenhao <1433233919@qq.com>
Date:   Wed Feb 20 23:27:55 2019 +0800

    Initial commit

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..191a9ad
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# TestGit
\ No newline at end of file
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

二、操作标签

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git tag -d v_0.8
Deleted tag 'v_0.8' (was 0ba4267)
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

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

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
remote: This repository moved. Please use the new location:
remote:   https://github.com/lwenhaoCN/TestGit.git
To https://github.com/liuwenhaoCN/TestGit.git
 * [new tag]         v1.0 -> v1.0
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 152 bytes | 152.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: This repository moved. Please use the new location:
remote:   https://github.com/lwenhaoCN/TestGit.git
To https://github.com/liuwenhaoCN/TestGit.git
 * [new tag]         v0.1 -> v0.1
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git tag -d v0.1
Deleted tag 'v0.1' (was 4496714)
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

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

lwenhaodeMacBook-Pro:TestGit lwenhao$ git push origin :refs/tags/v0.1
remote: This repository moved. Please use the new location:
remote:   https://github.com/lwenhaoCN/TestGit.git
To https://github.com/liuwenhaoCN/TestGit.git
 - [deleted]         v0.1
lwenhaodeMacBook-Pro:TestGit lwenhao$ 

要看看是否真的从远程库删除了标签,可以登陆GitHub查看。

© 著作权归作者所有

共有 人打赏支持
小儿
粉丝 3
博文 114
码字总数 62731
作品 0
海淀
程序员
私信 提问
Git使用手册2 —— 基础操作(下)

五、远程仓库的使用 为了能在任意 Git 项目上协作,你需要知道如何管理自己的远程仓库。 远程仓库是指托管在因特网或其他网络中的你的项目的版本库。 你可以有好几个远程仓库,通常有些仓库对...

常大鹏
2016/06/19
0
0
【git学习】SVN项目迁移到Git操作指南

2017年6月份的时候,我就着手在公司推广git,首先我自己尝试搭建了GitLab来管理代码,并且通过以下博客记录了GitLab的搭建,以及GitLab备份,GitLab升级等事情。 git学习——>在CenterOS系统...

qq446282412
2018/05/19
0
0
笔记《版本控制之道--使用Git》

笔记《版本控制之道--使用Git》 我认为每个学过Git的人都应该做过类似这种笔记,因为Git命令太多看着看着就把前边看过的忘了,之前我也看过Git,但是一直没用,现在一看几乎没有印象了,所以...

gongweixin
2012/12/21
0
2
OSChina 技术周刊第三期——最最常用的 100 个 Java 类

每周技术抢先看,总有你想要的! 移动开发 【博客】浅入浅出Android(014):HTTP GET获取文本内容 【博客】[Android][Android Studio] *.jar 与 *.aar 的生成 【资讯】移动 UI 模式 —— 用...

OSC编辑部
2014/10/05
4.7K
9
保护代码完整性(六):在 Git 上使用 PGP

我们继续我们的 PGP 实践系列,来看看签名标签的标签和提交,这可以帮你确保你的仓库没有被篡改。 在本系列教程中,我们提供了一个使用 PGP 的实用指南,包括基本概念和工具、生成和保护你的...

作者: Konstantin Ryabitsev
01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android服务2 BindService

MainActivity { class MyService extends Service { public void onCreate() {} public IBinder onBind(Intent intent) { //return new Binder(); retutn new MyBinder(); } public boolean ......

Coding缘
17分钟前
0
0
所有和Java中代理有关的知识点都汇集于此,速进学干货。

对于每一个Java开发来说,代理这个词或多或少都会听说过。你可能听到过的有代理模式、动态代理、反向代理等。那么,到底什么是代理,这么多代理又有什么区别呢。本文就来简要分析一下。 代理...

Java填坑路
23分钟前
0
0
镜像即代码:基于Packer构建阿里云镜像

什么是Packer Packer是HashiCorp推出的一款工具,旨在提供简易的方式自动化构建镜像。通过Packer,你只需要在配置文件中指明镜像构建所需的基本信息及期望安装到镜像中的软件及配置,即可通过...

迷你芊宝宝
24分钟前
0
0
好程序员前端教程之JavaScript闭包和匿名函数的关系详解

好程序员前端教程之JavaScript闭包和匿名函数的关系详解 本文讲的是关于JavaScript闭包和匿名函数两者之间的关系,从匿名函数概念到立即执行函数,最后到闭包。下面一起来看看文章分析,希望...

好程序员IT
32分钟前
0
0
简单的file获取文本内容且, 修改文本内容(java8)

题主, 因入职新公司, 表设计混乱, 不得不手动写一个小脚本,获取所有字段后,重新写入至新表中; 思路 顺序如下 原sql 具体, 获取行 , 根据行开头的" ,"截取内容, 重新输入到txt, 中就可以了; 代...

尾生
42分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部