“Git实践指南:深入探索开发测试上线、分支管理与标签“

文章目录

  • 引言
  • 一、Git的分支的使用
    • 1.分支
    • 2.标签
    • 3.分支与标签的关系
    • 4. 分支在实际中的作用
    • 5. 四个环境以及各自的功能特点
    • 6. 分支策略
    • 分支应用场景
  • 二、Git的标签
    • 3.1 标签的基本使用
    • 3.3 标签的共享与推送
  • 总结

在这里插入图片描述

引言

在现代软件开发中,版本控制是一个关键的环节,而Git作为最流行的分布式版本控制系统,为团队协作、代码管理和发布提供了强大的工具和功能。本篇博客将深入探讨Git的使用,重点讲解开发测试上线流程、分支管理和标签的应用技巧,帮助读者更深入地理解和应用Git,提高开发效率和代码质量。

一、Git的分支的使用

在这里插入图片描述

1.分支

dev/test/pre/pro(即master)
dev-开发环境–Windows(自己的电脑)
test-测试环境–Windows/Linux
pre-灰度环境
pro-正式环境

2.标签

Tag格式: 主版本号.次版本号.修订号-类型标签,其中类型标签可为:alpha、beta、rc、r。
Tag示例:1.0.0-alpha、1.0.0-beta、1.0.0-rc、1.0.0-r

注1:有的公司在版本命名时,前面加v,“-”替换成“_”,更加详细一点还可以在修订号后面添加发布日期
v1.0.0.191220_r,这都是可以的

3.分支与标签的关系

dev–>alpha
test–>beta
pre–>rc
pro–>r

4. 分支在实际中的作用

假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,
不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

怎么办?
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,
而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作

5. 四个环境以及各自的功能特点

四个环境分别是:dev、test、pre、pro(master),中文名字:开发环境、测试环境、灰度环境、生产环境

dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大。
test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定
pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。
pro(master)环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。

6. 分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:
1.首先,pro分支(即master)应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

2.那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,
再把dev分支合并到master上,在master分支发布1.0版本

3.修复bug时,我们会通过创建新的bug分支(即test)进行修复,然后合并,最后删除;

4.当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场

2.2 高级分支策略与开发流程
在实际项目中,我们经常需要使用不同的分支策略来管理开发流程。本节将深入讨论主分支保护与长期分支管理、功能分支与短期任务开发以及临时分支与bug修复的最佳实践。

2.3 分支合并技巧与最佳实践
分支合并是Git中常见的操作,但也容易引发冲突和历史混乱。本节将介绍使用rebase进行线性历史和干净的合并、利用补丁和cherry-pick选择性合并,以及小组协作中的分支推送和拉取策略。

2.4 分支策略与工作流程案例分析
不同的团队和项目可能适用不同的分支策略和工作流程。在本节中,我们将分析GitFlow工作流程和GitHub Flow在敏捷开发中的应用,并探讨如何自定义分支策略以适应团队的需求和项目的特点。

分支应用场景

  1. 准备新建一个空文件夹存放
  2. 新建一个私有的仓库,并且初始化完成,复制好ssh克隆网址
  3. 进入目标文件目录,并且查看分支
    在这里插入图片描述
    master为主分支
  4. 增加分支(git branch dev)并且切换dev分支 git checkout dev 删除dev要在master分支中进行,不能在dev中
    在这里插入图片描述
    然后 在dev中创建十个文件准备测试
  5. 搭建test分支
    在这里插入图片描述
  6. dev 提交六个
    在这里插入图片描述
    在这里插入图片描述
    此时还有5个未暂存
  7. 切换测试分支
    在这里插入图片描述
    这些都是未提交的
    然后test合并dev的文件
    在这里插入图片描述
    此时master能看到的只有5个

然后test测试分支把不合格的文件删掉
在这里插入图片描述
删掉之后git status就会看到
然后图形化,提交
在这里插入图片描述
然后切换到master
再合并test
在这里插入图片描述
我这里之前的不合格没提交,所以保留了下来
这个时候本地分支就搞好了,接下来搞远程分支
切换到dev分支,再进行远程操作,输入(git push origin dev回车)
在这里插入图片描述
在这里插入图片描述
然后是test,master
在这里插入图片描述
接下来为用到的代码作解释

  • git branch 查看分支
  • git branch dev 创建分支
  • git checkout dev 切换到该分支
  • git checkout -b dev 创建切换到该分支
  • git branch -d dev 删除分支
  • git push origin dev 推送
    其中dev 是分支名,我把分支名都用dev代替
    在这里插入图片描述

二、Git的标签

3.1 标签的基本使用

增删查的使用
在这里插入图片描述

3.2 语义化版本控制与标签管理
在软件开发中,语义化版本号能够清晰地说明不同版本之间的差异和兼容性。本节将探讨如何使用语义化版本号规范项目的版本,并讲解如何根据版本号进行标签管理和发布。

3.3 标签的共享与推送

  • dev分支推送alpha标签
    在这里插入图片描述
  • master分支推送r标签
    在这里插入图片描述
    此刻就有两个标签了
    在这里插入图片描述

现在出现这厶一种情况,原有的分支修复了代码异常问题需要重新提交,可以这么做
在这里插入图片描述
把这两个提交,然后在dev分支重新增加标签,并推送

在这里插入图片描述
此时有三个了
在这里插入图片描述
然后再删除
先删除本地的,再删除远程的
在这里插入图片描述

在这里插入图片描述
好了,到这里就完成了

总结

通过本篇博客的深度讲解,我们详细探索了Git的高级使用技巧,包括开发测试上线流程、分支管理和标签的应用。希望读者能够从中获得实际可行的工具和方法,提升团队的协作效率、代码质量和发布过程的可靠性。请注意,以上只是每个知识点的概述,您可以根据需要进一步扩展和深入研究每个主题。祝愿您在Git实践中取得更好的成果!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/133206.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年【危险化学品经营单位主要负责人】免费试题及危险化学品经营单位主要负责人证考试

题库来源:安全生产模拟考试一点通公众号小程序 2023年危险化学品经营单位主要负责人免费试题为正在备考危险化学品经营单位主要负责人操作证的学员准备的理论考试专题,每个月更新的危险化学品经营单位主要负责人证考试祝您顺利通过危险化学品经营单位主…

【扩散模型】万字长文全面理解与应用Stable Diffusion

万字长文全面理解与应用Stable Diffusion 1. Stable Diffusion简介1.1 基本概念1.2 主体结构1.3 训练细节1.4 模型评测1.5 模型应用1.6 模型版本1.7 其他类型的条件生成模型1.8 使用DreamBooth进行微调 2. 实战Stable Diffusion2.1 环境准备2.2 从文本生成图像2.3 Stable Diffu…

LIBGDX实时绘制字符、实时绘制中文

LIBGDX实时绘制字符、实时绘制中文 转自&#xff1a;https://lingkang.top/archives/libgdx-shi-shi-hui-zhi-zi-fu 注意&#xff0c;相比于贴图字体&#xff0c;实时绘制会有一定的失真、模糊 Maven项目依赖&#xff1a; <properties><maven.compiler.source>…

抢量双11!抖音商城「官方立减」 缘何成为“爆单神器”?

10月20日抖音商城双11好物节正式开跑&#xff0c;仅仅三天&#xff0c;抖音商城整体GMV对比去年同期提升了200%&#xff0c;而在开跑一周后&#xff0c;一些品牌的销售额已经超过了今年整个618&#xff0c;可谓增势迅猛。其中&#xff0c;平台官方特别推出的「官方立减」玩法&a…

基于51单片机的篮球比赛计分器积分器

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;单片机篮球 获取完整源程序仿真源文件原理图文件论文报告等 基于51单片机的篮球计分器 由STC89C51单片机数码管显示模块按键模块电源模块构成 具体功能&#xff1a; &#xff08;1&#xff09;能记录单节比赛的比赛时间&am…

ETW HOOK原理探析

ETW HOOK研究 文章目录 ETW HOOK研究前言原理探究内核开启ETW日志HOOK ETW修改ETW日志上下文代理GetCpuClock函数寻找SSDT和SSDT Shadow 总结参考 前言 关于ETW是什么我就不多说了&#xff0c;可以通过微软的相关文档了解到。据网上得知这项技术最早被披露于2345的驱动中&…

【字符串】【双指针翻转字符串+快慢指针】Leetcode 151 反转字符串中单词【好】

【字符串】【双指针翻转字符串快慢指针】Leetcode 151 反转字符串中单词 解法1 双指针翻转字符串快慢指针更新数组大小 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- ---------------&#x1f388;&#x1f388;解答链接…

UI自动化测试 | Jenkins配置优化

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…

MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录

使用 ORDER BY 进行排序 使用 ORDER BY 语句按升序或降序对结果进行排序。 ORDER BY 关键字默认按升序排序。要按降序排序结果&#xff0c;使用 DESC 关键字。 示例按名称按字母顺序排序结果&#xff1a; import mysql.connectormydb mysql.connector.connect(host"l…

Linux 内核定时器

一个人总要走陌生的路&#xff0c;看陌生的风景&#xff0c;听陌生的歌&#xff0c;然后在某个不经意的瞬间&#xff0c;你会发现&#xff0c;原本费尽心机想要忘记的事情真的就这么忘记了。 ----小新 一、引言 Linux内核定时器是一种用于在特定时间间隔后触发特定事件的重要组…

数据结构之AVL树

map/multimap/set/multiset这几个容器有个共同点是: 其底层都是按照二叉搜索树来实现的,但是普通的二叉搜索树有其自身的缺陷, 假如往树中插入的元素有序或者接近有序, 二叉搜索树就会退化成单支树, 时间复杂度会退化成O(N),因此map、set等关联式容器的底层结构是对二叉树进行了…

JavaScript基础入门04

目录 1.WebAPI 背景知识 1.1什么是 WebAPI 1.2什么是 API 2.DOM 基本概念 2.1什么是 DOM 2.2DOM 树 3.获取元素 3.1querySelector 3.2querySelectorAll 4.事件初识 4.1基本概念 4.2事件三要素 4.3简单示例 5.操作元素 5.1获取/修改元素内容 5.2获取/修改元素属性…

记事本简单运行java代码,理解程序运行

1.记事本创建一个文件, 把后缀.txt改为.java 如果没有显示尾缀, 勾选出文件扩展名 2.在文件里面编辑java代码并保存 3.在当前目录打开cmd 4.执行 javac Test.java 会生成好编译的.class文件 5.执行下面代码, 就成功得到j编写ava打印的代码 java Test 6.注意上面的中文在cmd中…

Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0-CPU版本总结

Python3.8安装可以参考博文https://janus.blog.csdn.net/article/details/55274849 进行安装即可。 【1】Anaconda 清华的开源软件镜像站&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载&#xff0c;这里选择的是5.3.1版本。 然后正常安装就可以&am…

C++17中std::optional的使用

模版类std::optional管理一个可选的(optional)存储值(contained value)&#xff0c;即可能存在也可能不存在的值。std::optional的一个常见用例是存储可能失败的函数的返回值。与其它方法相反(例如std::pair<T, bool>),std::optional可以很好地处理构造成本高昂的对象&am…

帧同步的思想与FIFO复位

02基于FDMA三缓存构架_哔哩哔哩_bilibili 图像从外部传输进来的时候&#xff0c;会产生若干延迟&#xff0c;可能会出现各种各样的问题&#xff08;断帧等&#xff09;&#xff0c;此时可以通过VS信号清空FIFO进行复位。 这个过程中的复位信号可能需要拓展&#xff0c;这是因为…

运筹说 第102期 | 非线性规划—制约函数法

通过上期学习&#xff0c;大家已经了解了非线性规划中约束极值问题的最优性条件。本期小编将为大家介绍约束极值问题的求解方法&#xff1a;制约函数法&#xff0c;包括概念以及最基本的两种制约函数法&#xff1a;罚函数法、障碍函数法等内容。 制约函数法是通过构造某种制约函…

数据分析 - 数据案例流程分析

有这样的一个案例&#xff1a;外卖骑手的未接单率上升 1&#xff1a;分析有哪些因素会造成这种后果 骑手和订单的一个占比情况订单配送距离的情况平台补贴情况和收入情况时间段的订单和骑手的需求比 2&#xff1a;清理错误数据&#xff0c;或者无用的数据&#xff0c;确保数…

Docker安装详细步骤及相关环境安装配置

目录 一、从空白系统中克隆Centos7系统 二、使用xshell连接docker_tigerhhzz虚拟机 ​编辑 三、在CentOS7基础上安装Docker容器 最近自己在虚拟机上搭建一个docker,将项目运行在虚拟机中。 需要提前准备的工具&#xff0c;XShell(远程链接工具)&#xff0c;VM&#xff08;…

专业128分总分390+上岸中山大学884信号与系统电通院考研经验分享

专业课884 信号系统 过年期间开始收集报考信息&#xff0c;找到了好几个上岸学姐和学长&#xff0c;都非常热情&#xff0c;把考研的准备&#xff0c;复习过程中得与失&#xff0c;都一一和我分享&#xff0c;非常感谢。得知这两年专业课难度提高很多&#xff0c;果断参加了学长…