Git实战手册(二): 标签应用和版本管理
0. 背景介绍
当一个代码仓库进过长时间的迭代,针对不同的时期和需求,必定会有不同的版本。而借助 Git 提供的标签功能,可以快捷方便地记录代码版本。无论什么时候,想取回某个版本,不再需要查找冗长的
commit_id,只需要取出打标签的历史版本即可。
可以这么理解:标签是版本库的一个快照。在主流的 Git 平台上,版本可以直接下载的,节省了开发者的不少精力。
下面记录下如何借助 标签 进行版本管理。
1. 环境仿真
首先我在 github 上建立了一个仓库。如你所见,这是一个全新仓库:>>> Star now

执行git clone git@github.com:dongyuanxin/git-demos.git, 将代码库 clone 到本地后。
在根目录下创建一个hello.v1.py文件:touch hello.v1.py。代码如下:
# hello.v1.py
print("This is version 1.0")
2. 本地标签操作
下面记录了本地标签操作的常用命令:
| 命令 | 作用 |
|---|---|
git tag |
查看所有标签 |
git tag <tagname> |
创建标签:tagname |
git tag -a <tagname> -m <comment> |
为标签 tagname 增加说明 comment |
git show <tagname> |
查看标签:tagname 的内容 |
git tag -d <tagname> |
删除标签:tagname |
其中,创建标签tagname并且增加说明comment,可以简写成:git tag <tagname> -m <comment>
Now, 为代码库在本地打上标签:git tag v1.0.0 -m 'v1.0.0正式版本'。
3. 标签的远程推送和拉取
在本地打好标签后,需要将标签推送到Git平台(比如GitHub)上,才能留下版本快照,供别人下载使用。
除此之外,还有可能删除已经发布的标签(比如标签命名不合规范)。
下面记录了远程标签操作的常用命令:
| 命令 | 作用 |
|---|---|
git push origin --tags |
推送所有标签 |
git push origin <tagname> |
推送指定标签 |
我们首先将v1.0.0版本推送到Github:git push origin v1.0.0
然后,打开仓库,我们会发现releases标签已经变成了1。

点进去,会发现我们可以直接下载v1.0.0版本。所以,标签是版本的快照。

值得一提的是:标签会随着git clone仓库时候,自动拉取到本地。不信的话可以clone一下这个代码仓库,查看是不是已经有了v1.0.0这个标签。
4. 标签的删除
标签的删除请慎重,尤其是删除远程标签(一般来说,没有人会这么做)。命令如下:
| 命令 | 作用 |
|---|---|
git tag -d <tagname> |
删除指定标签 |
git push origin :refs/tags/<tagname> |
删除远程标签 |
5. 拓展阅读
版本管理可以借助git的tag来实现。但是,在开发过程中,不可能每次修改都打标签然后发布。
实际开发中,一般会有一个dev分支,作为开发版本分支。在没有完成此次开发任务前,所有的代码都是合并到dev分支。
当完成了开发任务,管理者会将dev分支合并到master分支,然后删除dev分支,并且通过打标签来发布版本。
这就是为什么很多放弃维护的大型开源项目只有master分支的原因。
Git实战手册(二): 标签应用和版本管理的更多相关文章
- Git实战(二)原理
上次的博文Git实战(一)版本号控制概述中我们简介了一下版本号控制系统的概念,重点对版本号控制的三种类型进行了分析和对照,从本篇博文開始我们进入Git的世界,首先介绍一下Git实现版本号控制的原理. ...
- Git实战手册(三): stash解惑与妙用
0. 介绍 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 在实际项目开发中,总会遇到代码写到一半(没法去打commit),去开启新 ...
- Git简明教程二、开始进行版本管理
上一篇介绍了Git中的一些基本概念.本篇来实际看一看如何通过几个常用命令来快速上手Git,完成版本管理的日常操作(核心操作). 0. 准备工作 安装Git后,请先在你的电脑上新建或选择一个目录作为测试 ...
- Git 实战手册(一): 批量修改log中的提交信息
本文须知 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 背景介绍 事情的起源是这样的:迷恋的谷歌的我最近申请了一个新的 googl ...
- git实战-linux定时监控github更新状态(二)
系列文章 git介绍-常用操作(一)✓ git实战-linux定时监控github更新状态(二)✓ 本文主要内容 如何查看github的本地仓库和远程仓库的同步情况 linux服务器定时监控githu ...
- svn 迁移至git操作手册
svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...
- Git使用手册【转】
转自:https://www.jianshu.com/p/e32a8e7ca93b 目录: Git是什么 基本概念 Git的诞生 Git的安装与配置 创建版本库 Git操作略览 远程仓库:git的杀招 ...
- AxureRP8实战手册
基础操作篇 本篇包含56种常见的基础操作,初学者应在掌握本篇内容后再进行实战案例篇的学习,以免产生学习障碍.同时,建议具备一定基础的读者学习本篇中相对生疏的内容,并加以掌握. 第1章 使用元件 本文目 ...
- Git随身手册
Git随身手册 本文是关于Git探索的一篇文章,阐述了Git的大部分命令和使用方式,并列举了几个典型的使用场景以供参考和体会. 对于Git这个分布式的VCS,从链表的角度来看待是最容易理解的: 一次c ...
随机推荐
- openxml excel封装类
public class ExcelUntity { #region property /// <summary> /// excel文档(相当于excel程序) /// </sum ...
- CCNA笔记
*****************交换机********************一:交换机:具有多个交换端口,专用集成电路技术使得交换器以线路速率在所有的端口并行转发数据,有很高的总体吞吐率;虚拟网V ...
- 微信公众号UX分析—— 学生作业小结
1. 不足: 1. 权威性:个人帐号,显得不够正式. 2. 排版问题: + 没有必要的外接端口,界面设计极度缺少排版.哪怕是个人公众号都不至于如此,更何况这是一个学校的教务平台. 3. 反应不及时或无 ...
- ng 的 ng-repeat(对象) 把对象的 key 和value 都拿出来 循环
对象的repeat 是这种形式
- 《分布式Java应用与实践》—— 后面两章
failover? NAT IP-tunneling DSR vrrp gossip 什么是2PC? 什么是3PC? 什么是Pasox? sna? dal? mpi?
- tar与压缩详解
.gz gzip gunzip(gzip -d) .zip .rar .bz2 gzip压缩文件不保留原文件 , 不能压缩目录 gzip filename.x 用gzip压缩文件 gun ...
- c++编程之内存的分配
当我们在进行编程时,特别是使用c++语言进行编程时,需要知道内存有几个内存区可供我们使用,因为c++可以直接操作内存.接下让我们来看看内存中的几大内存区. 1.栈区 栈区(stack)是速度最快的一个 ...
- [原创]K8_Delphi源码免杀系列教程
[原创]K8_Delphi源码免杀系列教程[2014] 虽是2014年的,但免杀思路方法并未过时 比如函数动态调用\代码注释法等至今依然有效 链接:https://pan.baidu.com/s/1H ...
- IO流查找文件然后写入TXT文档
今天领导让分析日志,把日志中所有登录过的员工信息都拿出来.于是.把日志摘下来谢了这段代码 import java.io.BufferedReader;import java.io.BufferedWr ...
- 如何开始DDD(续)
上一篇针对用户注册案例简单介绍了如何使用 DDD,接下来我将继续针对这个例子做一下补充.先将User模型丰富起来,因为目前看上去他和贫血模型还没有啥大的区别. 首先还是由领域专家来说明业务,他提出了用 ...