发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。过程如:标签(tag) → commit 。

Git有commit,为什么还要引入标签(tag)?                                                                                                                                                  “请把上周一的那个版本打包发布,commit号是6a5819e...”
 “一串乱七八糟的数字不好找!”                                                                                                                                                                      如果换一个办法:                                                                                                                                                                                              “请把上周一的那个版本打包发布,版本号是v1.2”                                                                                                                                        “好的,按照tag v1.2查找commit就行!”                                                                                                                                                        所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

标签的意思是:
        “我要找commit id是892b892a3f7...的那个版本”
        “一串乱七八糟的数字怎么找?”
        “我要找的commit id是打了tag “v1.1”的那个版本”
        “找到了:git show v1.1”

标签就是跟某个 commit 版本号 关联起来,便于发布和查找 ;


创建标签

在Git中打标签(tag)非常简单,首先,切换到需要打标签(tag)的分支上(如果说主分支master 需要打标签,就切换到主分支master上),如下:

然后,输入命令 git tag <name> 就可以打一个新标签(tag),如下:

可以用命令 git tag 查看所有标签(tag),如下:

默认标签(tag):是打在最新提交的 commit 上的。有时候,如果忘了打标签(tag), 比如,现在已经是周五了,但应该在周一打的标签(tag)没有打,怎么办?方法:是找到历史提交的 commit id ( 第五篇 git log )版本号,然后打上标签(tag)就可以了,如下:

假如 说要对 add merge 这次提交打标签(tag),它对应的 commit id (版本号) 是 f4047e5,输入命令,如下:

再用命令 git tag 查看标签(tag),如下:

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

可以看到, v0.9 确实打在 add merge 这次提交上。还可创建带有说明的标签(tag),用-a指定标签(tag)名,-m指定说明文字,        以版本号  commit id 为 a0297d1 的  confilect fixed 为例,如下:

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

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

综上所述: 目前已有3个 commit 打了标签(tag),如下:

分别是:

小结:

  1. 命令 git tag <tagname> 用于新建一个标签,默认为HEAD,也可以指定一个 commit id(版本号) 来设置标签(tag);

  2. 命令 git tag -a <tagname>  -m "文字说明" commit id 表示可以指定标签(tag)信息;

  3. 命令 git tag 可以查看所有标签(tag)。

  4. 命令 git show <tagname> 查看标签(tag)信息;


操作标签

如果标签(tag)打错了,也可以删除,如下:

因为创建的标签(tag)都只存储在本地,不会自动推送到远程。所以,打错的标签(tag)可以在本地安全删除。如果要推送某个标签(tag)到远程,使用命令 git push origin <tagname>,如下:

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

如果标签(tag)已经推送到远程,要删除远程标签(tag)就麻烦一点,先从本地删除,如下: v0.9举例

然后,从远程删除。删除命令也是push,但是格式如下:(   :refs/tags/<tagname>  )

综上所述:整个删除过程:先从本地删除标签(tag)→然后再从远程删除标签(tag)。

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

小结:

  1. 命令 git push origin <tagname> 可以推送某一个本地标签(tag)到远程;

  2. 命令 git push origin --tags  可以一次性推送全部未推送过的本地标签(tag)到远程;

  3. 命令 git tag -d <tagname> 可以删除某一个本地标签(tag);

  4. 命令 git push origin :refs/tags/<tagname> 可以删除某一个远程标签(tag);

如果标签(tag)已推送到远程,需要删除远程标签(tag)则执行3,4步骤;


转自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

标签管理~创建标签、操作标签(十五)相关推荐

  1. 【Git】Git 标签使用 ( 创建并查询标签 | 推送单个标签到远程仓库 | 推送所有标签到远程仓库 | 删除远程仓库的标签 )

    文章目录 一.创建并查询标签 二.推送单个标签到远程仓库 三.推送所有标签到远程仓库 四.删除远程仓库的标签 一.创建并查询标签 执行 git log --pretty=oneline --abbre ...

  2. 大IPD之——学习华为战略人力资源管理:从职能管理到业务伙伴(十五)

    在经济高速发展的今天,任何一家企业,想要增强实力.扩大发展,内部的管理绝对不能混乱.就像气球,吹气越快爆炸的几率就越高,企业不能只寻求快速发展而忽视管理.华为创立30多年以来发展迅速,其中也遇到了各种 ...

  3. Git基础之(二十)——标签管理——创建标签

    在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branch * devmaster$ git checkout masterSwitched to branch 'maste ...

  4. Git学习笔记:标签管理以及GItHub

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  5. Git学习(四)标签管理

    标签管理 git学习参考 廖雪峰官方网站 git基本操作,一篇文章就够了! 一.标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候 ...

  6. 【六】Tag标签管理

    标签管理 创建标签 操作标签 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来. ...

  7. DOM操作标签与jQuery框架

    今日内容概要 1 > DOM操作标签 1.1 > 动态创建一个a 标签 1.2 > 默认与自定义属性 1.3 > getAttribute和removAttribute 方法 ...

  8. 数据应用场景之标签管理体系

    一.标签简介 标签概念 标签,最初用来对实物进行分类和标记,例如标明物品的品名.重量.体积.用途等简要信息.后来逐渐流行到数据行业,用来标记数据,对数据快速分类获取和分析. 标签特点 精确描述定位和搜 ...

  9. 从零开始前端学习[50]:js操作标签属性,读写属性标签

    js操作标签属性 标签属性 js下操作标签属性 提示: 博主:章飞_906285288 博客地址:http://blog.csdn.net/qq_29924041 前端的一些标签属性 标签属性:通俗的 ...

最新文章

  1. 【百度地图API】如何制作多途经点的线路导航——驾车篇
  2. 日记20190415
  3. 《模式识别与机器学习》学习笔记:2.2 多项变量
  4. 腾讯大数据星火计划--Angel技术沙龙 对外报名正式启动!
  5. 职场人必备的几个PPT进阶小技巧
  6. docker 安装入门
  7. 读《系统虚拟化-原理与实现》-第二章
  8. 经典回溯之火柴拼正方形
  9. Material Design之AppBarLayout总结
  10. Linux系统编程27:进程间通信之管道的基本概念和匿名管道与命名管道及管道特性
  11. Android笔记 Android艺术探索笔记 Pacel VS Serialize Demo
  12. Header First设计模式学习笔记——单例模式
  13. JPA JAVA代码生成器(entity ,controller ,service ,repository)
  14. 基于51单片机及ADC0808的数字电压表数码管汇编语言proteus仿真程序设计
  15. 博科300 java配置,博科300 光纤交换机如何设置为SSH登录?
  16. 计算机分屏功能吗,电脑分屏显示
  17. 01背包问题解法及优化
  18. 肌酸报告:17个肌酸使用常见问题解答
  19. Rider 全局搜索搜索不到内容
  20. 数论基础题(1) 费马引理+卡特兰数+Lucas定理+同余方程+扩欧

热门文章

  1. 定位的坐标原点HTML,css固定定位_CSS绝对定位固定定位详解
  2. java filter response_ZuulFilter中设置Response的原理。
  3. 手机号邮箱正则工具类
  4. 什么是服务熔断?什么是服务降级?
  5. 联盟训练在游戏AI多样化的探索
  6. 【Matlab系列】Matlab各个版本安装教程分享
  7. 牛客网题库分享--final byte
  8. MapReduce中wordcount详细介绍
  9. Left Join(左联接)
  10. 【Python入门】Turtle海龟库:利用海龟画笔绘制简单图形(1)