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实战手册(二): 标签应用和版本管理的更多相关文章

  1. Git实战(二)原理

    上次的博文Git实战(一)版本号控制概述中我们简介了一下版本号控制系统的概念,重点对版本号控制的三种类型进行了分析和对照,从本篇博文開始我们进入Git的世界,首先介绍一下Git实现版本号控制的原理. ...

  2. Git实战手册(三): stash解惑与妙用

    0. 介绍 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 在实际项目开发中,总会遇到代码写到一半(没法去打commit),去开启新 ...

  3. Git简明教程二、开始进行版本管理

    上一篇介绍了Git中的一些基本概念.本篇来实际看一看如何通过几个常用命令来快速上手Git,完成版本管理的日常操作(核心操作). 0. 准备工作 安装Git后,请先在你的电脑上新建或选择一个目录作为测试 ...

  4. Git 实战手册(一): 批量修改log中的提交信息

    本文须知 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 背景介绍 事情的起源是这样的:迷恋的谷歌的我最近申请了一个新的 googl ...

  5. git实战-linux定时监控github更新状态(二)

    系列文章 git介绍-常用操作(一)✓ git实战-linux定时监控github更新状态(二)✓ 本文主要内容 如何查看github的本地仓库和远程仓库的同步情况 linux服务器定时监控githu ...

  6. svn 迁移至git操作手册

    svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...

  7. Git使用手册【转】

    转自:https://www.jianshu.com/p/e32a8e7ca93b 目录: Git是什么 基本概念 Git的诞生 Git的安装与配置 创建版本库 Git操作略览 远程仓库:git的杀招 ...

  8. AxureRP8实战手册

    基础操作篇 本篇包含56种常见的基础操作,初学者应在掌握本篇内容后再进行实战案例篇的学习,以免产生学习障碍.同时,建议具备一定基础的读者学习本篇中相对生疏的内容,并加以掌握. 第1章 使用元件 本文目 ...

  9. Git随身手册

    Git随身手册 本文是关于Git探索的一篇文章,阐述了Git的大部分命令和使用方式,并列举了几个典型的使用场景以供参考和体会. 对于Git这个分布式的VCS,从链表的角度来看待是最容易理解的: 一次c ...

随机推荐

  1. 17.异常(三)之 e.printStackTrace()介绍

    一.关于printStackTrace()方法 public void printStackTrace()方法将此throwable对象的堆栈追踪输出至标准错误输出流,作为System.err的值.输 ...

  2. git dev 分支merge到master

    code reviewer之后,需要把dev分支的代码merge到master分支.通过在azkaban的服务器上git pull,最终将代码上线. git dev 分支merge到master # ...

  3. js验证身份证号,超准确

    js验证身份证号,超准确 看程序前先来了解下身份证号的构成:身份证号分为两种,旧的为15位,新的为18位.身份证15位编码规则:dddddd yymmdd xx p    其中 dddddd:地区码  ...

  4. 我来谈谈PHP和JAVA在web开发上的的区别

    这里的标题写的是谈谈PHP和JAVA的区别,其实是委婉的说法,其实别人是想听PHP好还是JAVA好!!! 从而从中找到存在感!!! 因为由于我是从多年的php开发转到java开发的.所以最,不时的有好 ...

  5. HTML里面form表单name,action,method,target,enctype等属性用法

    HTML里面的form表单里面的name,target,enctype,method以及action的用法 HML表单HTML里面的表单是HTML页面与浏览器交互的重要手段,表单主要提交一些客户端的数 ...

  6. Python - 集成开发环境Pycharm的使用方法和技巧

    PyCharm HomePage:PyCharm 我的Pycharm,我做主 Getting Started with PyCharm Pycharm使用技巧 Documentation & ...

  7. Java线程池(ThreadPoolExecutor)原理分析与使用

    在我们的开发中"池"的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 使用线程池的好处 1.降低资源消耗 可以重复利用 ...

  8. Liferay7 BPM门户开发之6: Activiti数据库换为mysql

    第一步: 在mysql中创建数据库名字叫 'activiti' 执行D:\activiti-5.21.0\database\create下的脚本 第二步: 打开=> apache-tomcat/ ...

  9. Kaggle项目实战一:Titanic: Machine Learning from Disaster

    项目地址 https://www.kaggle.com/c/titanic 项目介绍: 除了乘客的编号以外,还包括下表中10个字段,构成了数据的所有特征 Variable Definition Key ...

  10. 一筐鸡蛋的lcm

    问题 一筐鸡蛋,一个一个取正好取完,两个两个取剩下一个,三个三个取正好取完,四个四个取剩下一个,五个五个取少一个,六个六个取剩下三个,七个七个取正好取完,八个八个取剩下一个,九个九个取正好取完,共多少 ...