Git 跟其它版本控制系统一样,可以对某一时间点上的版本打上标签。在做版本发布的时候经常会用到。尽管 Git 只实现了一种标签对象,但是有两种基本的标签类型,通常称为轻量级的(lightweight)和带附注的(annotated)。Git 标签的作用通俗来说,tag 指向一次 commit 的 id,给开发分支做一个标记,如标记一个版本号等。标签相关命令以 git tag 开头。

标签类型

轻量级标签:就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。通常被版本库视为是私有的。这些标签并不在版本库里创建永久对象。

含附注标签:实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身可以根据 RFC 4880 来使用 GNU Privacy Guard(GPG)密钥进行数字签名。

总结的说就是轻量级标签是一个引用,附注标签是一个独立的对象。一般建议使用附注标签,以保留相关详细信息。

标签与分支的区别

标签是当前分支上的一个标记,其实道理和 commit 的 commit-sha1 有些相似,其实就是给当前的版本做个标记,以便回退到此版本。如果使用 commit-sha1,大家都记不住那条冗长的 sha1 码,所以用 tag 标签来做记录;而分支(branch)是一条可变的另一个“跑道”。

概括来讲就是两点显著的区别:

tag 就像是一个里程碑一个标志一个点,branch 是一个新的征程一条线;

tag 是静态的,不可改变,branch 是变化的,要向前走;

标签常用命令

标签提交

在当前分支的当前提交节点,新建轻量级标签(无需指定任何额外参数) :

$ git tag v1.0.0_lw

新建附注标签,`-a` 参数后接标签名称,`-m` 参数添加标签说明:

$ git tag -a v1.6 -m "version 1.6"

对过去指定的提交(commit id)上打标签,指定对应 commit id(示例中的 9fceb02) 即可,若不指定 commit id,即默认在当前 HEAD 上打标签:

$ git tag -a v1.6 9fceb02 -m "version 1.6"

提交一个标签到远程仓库的命令:

$ git push origin v1.6

一次提交本地的所有标签到远程仓库的命令:

$ git push origin --tags

标签查看

查看本地指定标签对应的信息:

$ git show v1.6

查看本地所有的标签列表:

$ git tag

列出远程仓库中所有的标签:

$ git ls-remote --tags

获取远程标签到本地:

$ git fetch origin tag

标签删除

删除本地的标签:

$ git tag -d v0.9

删除远程标签主要有三种方式:

使用参数 `--delete`:

$ git push origin --delete tag

相当于推送一个空分支到远程分支:

$ git push origin :

先删除本地 tag,再推送一个空的 tag 到远程仓库:

$ git tag -d

$ git push origin :refs/tags/

git push 的符号笔有什么用_Git 标签(tag)作用、分支区别及常用命令相关推荐

  1. git push 的符号笔有什么用_Git自救指南(一)——工欲善其事,必先利其器,基本概念概览...

    虽然大家肯定都知道这两个概念,但是还是要先说两句废话的-- Git -> 分布式版本控制系统,用来记录一个或者多个文件的变化. GitHub -> 代码托管中心,用来提供Git服务的地方. ...

  2. git push 的符号笔有什么用_如何同步多个 git 远程仓库

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:taadis my.oschina.net/taadis/blog/3073220 ...

  3. git push时提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支

    在对本地库中的文件执行修改后,想git push推送到远程库中,结果在git push的时候提示出错: ! [rejected]        master -> master (non-fas ...

  4. 记录一下git 的常用命令

    以后如果要写一个东西,最好先搭建一个本地仓库,用版本控制对其进行操作,可能一开始有一些麻烦,但是很有可能会受益无穷. 说到git,必然会和github联系起来. 不管是在ubuntu里面还是在Wind ...

  5. git push --set-upstream

    我在本地建了一个分支wangxiao,开发完之后,提交代码 git add . git commit -m '注释' git push 出现下面的问题,这个意思是:当前分支没有与远程分支关联. 因此导 ...

  6. 深入理解git push

    git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master:refs/fo ...

  7. git push时rejected,解决non-fast-forward errors的办法

    问题: 在git push时无法推送到远端仓库,出现下面的信息 $ git push origin master To https://github.com/USERNAME/REPOSITORY.g ...

  8. Git push 常见用法

    Git push 常见用法 - 浅浅念 - 博客园Git push 在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,如果 ...

  9. git push origin master报错的解决方法 常见git命令(待更新)

    git push origin master报错的解决方法 & 常见git命令(待更新) 参考Git常用命令 文章目录 git push origin master报错的解决方法 & ...

最新文章

  1. 最让程序员自豪的事情是什么?
  2. 完了!TCP出了大事!
  3. IOS上传图片旋转90度问题出现原因及解决方案
  4. (原創) 深入探討blocking與nonblocking (SOC) (Verilog)
  5. 「神策客景」全面升级,懂客户,更懂你
  6. BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞
  7. android重启时间变成1970,Android时间戳转字符串的1970问题
  8. Part5核心初始化_lesson3---关闭看门狗
  9. 工厂模式例子之计算器的实现
  10. Debug Hook
  11. Java运行时的数据区域
  12. python是什么课程-python课程体系是怎么样的?
  13. python集合_Python集
  14. 毕业生推荐表计算机水平新国二,实用信息 | 2018届毕业指南:毕业生推荐表与三方协议...
  15. 推荐一款好用的加密软件 filepackage 文件加密 U盘加密 移动硬盘加密
  16. 常见开源代码扫描检测技术分析
  17. PTV-VISSIM交通仿真软件
  18. thermal 代码分析
  19. 漫谈程序员系列 软件开发的十八般乐趣
  20. 将父类实体类转变子类实体类

热门文章

  1. Qt工程pro文件的配置和头文件和库的添加
  2. VS2010 MFC中控件、对话框等背景颜色动态修改的方法
  3. IOS15 的UITableViewController 如何初始化
  4. Windows编程之定时器的使用和定时销毁桌面出现的窗口,以及窗口句柄的获取
  5. java 超时集合_确定性监视器脉冲/等待并在 生产环境 者 - 消费者集合中实现超时...
  6. wordpressQQ登陆php代码_WordPress实现前台登录功能
  7. pycharm同一目录下无法import明明已经存在的.py文件
  8. Keras和TensorFlow的关系和区别
  9. 74cms3.0——Error:Can‘t select MySQL database(74cms3.0)...
  10. 17年三月计算机二级,2017年3月计算机二级考试攻略