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 ...
随机推荐
- [smf]论坛实现编辑器附件插入的插件
smf论坛代码的相关介绍,可以参见博客园的其他文章,这里不再详细说明了. 插件功能: 在帖子里的任何位置插入附件图片. 关于安装: 该插件已经经过“维尼熊的百宝箱”的修改,在新版本SMF 2.0.14 ...
- Powershell渗透测试系列–进阶篇
原文来自:https://bbs.ichunqiu.com/thread-41561-1-1.html i春秋作家:anyedt 0×00 引言 经过基础篇的学习我们已经对powershell有了一个 ...
- Linux 进程一直占用单核CPU分析
pidstat 1信息
- 彻底理解Java中的基本数据类型转换(自动、强制、提升)
说基本数据类型转换之前,先了解下 Java 中的 8 种基本数据类型,以及它们的占内存的容量大小和表示的范围,如下图所示. 重新温故了下原始数据类型,现在来解释下它们之间的转换关系. 自动类型转换 自 ...
- Maven classifier 元素妙用
首先来看这么一个依赖 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json- ...
- 测试工具之Jmeter(创建一个简单测试用例)
前面介绍了如何使用badboy录制jmeter脚本,以及如何导入脚本并进行测试 这里介绍下手动创建测试用例,主要步骤如下: 1.创建线程组 第一次打开Jmeter只有一个测试计划,右键“测试计划”选择 ...
- iptables防DDOS攻击和CC攻击设置
防范DDOS攻击脚本 #防止SYN攻击 轻量级预防 iptables -N syn-flood iptables -A INPUT -p tcp --syn -j syn-flood iptables ...
- Rpc简单入门
RPC这个概念大家都应该很熟悉了,这里不在累述了:使用场景可以参考这篇,本篇主要分享下Thrift和Grpc在.Net Core环境下使用入门.Thirft或者Grps 都支持跨语言.跨平台的Rpc框 ...
- Create and Embed an Application Manifest (UAC)
http://msdn.microsoft.com/en-us/library/bb756929.aspx 可以在VS2008中设置当执行exe时弹出提升管理员权限对话框:xx Property-&g ...
- Gradle 大杂烩
1. 什么是Gradle Gradle是一个项目构建工具,目前支持Java.Groovy.Kotlin.Scala.构建脚本使用Groovy或Kotlin,目前一般用Groovy. 2. Gradle ...