“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.rhkb.cn/news/188236.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11 抽象向量空间

抽象向量空间 向量是什么函数什么是线性推论向量空间 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 向量是什么 可以是一个箭头,可以是一组实数,即一个坐标对。 箭头在高维(4维,甚至更高)空间&…

云效流水线docker部署 :node.js镜像部署VUE项目

文章目录 引言I 流水线配置1.1 项目dockerfile1.2 Node.js 镜像构建1.3 docker 部署引言 云效流水线配置实现docker 部署微服务项目:https://blog.csdn.net/z929118967/article/details/133687120?spm=1001.2014.3001.5501 配置dockerfile-> 镜像构建->docker部署。 …

电脑怎么录制视频,录制的视频怎么剪辑?

在现今数字化的时代,视频成为了人们日常生活中不可或缺的一部分。因此,对于一些需要制作视频教程、录制游戏或者是进行视频演示的人来说,电脑录屏已经成为了一个必不可少的工具。那么,对于这些人来说,如何选择一个好用…

C语言 每日一题 PTA 11.7 day13

1.求e的近似值 自然常数 e 可以用级数 1 1 / 1! 1 / 2! ⋯ 1 / n! ⋯ 来近似计算。 本题要求对给定的非负整数 n&#xff0c;求该级数的前 n 1 项和。 代码实现 #include<stdio.h> void main() {int a, i, j; double b 1; double c 1;printf("请输入一个数\n…

计算机网络第4章-通用转发和SDN

引子&#xff1a; 在前面&#xff0c;我们将基于目的地转发的特征总结为两个步骤&#xff1a; 查找目的IP地址&#xff08;匹配&#xff09;&#xff0c;然后将分组发送到有特定输出端口的交换结构&#xff08;“动作”&#xff09;。 但是这种转发特征会带来许多问题&#…

Redis的内存淘汰策略分析

概念 LRU 是按访问时间排序&#xff0c;发生淘汰的时候&#xff0c;把访问时间最久的淘汰掉。LFU 是按频次排序&#xff0c;一个数据被访问过&#xff0c;把它的频次 1&#xff0c;发生淘汰的时候&#xff0c;把频次低的淘汰掉。 几种LRU策略 以下集中LRU测率网上有很多&am…

使用电脑时提示msvcp140.dll丢失的5个解决方法

“计算机中msvcp140.dll丢失的5个解决方法”。在我们日常使用电脑的过程中&#xff0c;有时会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。那么&#xff0c;什么是msvcp140.dll呢&#xff1f;它的作用是什么&#xff1f;丢失它会对电脑产生什么影响呢&…

【uniapp】签名组件,兼容vue2vue3

网上找了个源码改吧改吧&#xff0c;清除了没用的功能和兼容性&#xff0c;基于uniapp开发的 样子 vue2 使用方法&#xff0c;具体的可以根据业务自行修改 <signature ref"signature" width"100%" height"410rpx"></signature>confi…

【数据结构】C语言实现单链表万字详解(附完整运行代码)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.了解项目功能 在本次项目中我们的目标是实现一个单链表: 该单链表使用动态内存分配空间,可以用来存储任意数量的同类型数据. 单链表结点(Node)需要包含两个要素:数据域data…

Leetcode2834. 找出美丽数组的最小和

Every day a Leetcode 题目来源&#xff1a;2834. 找出美丽数组的最小和 解法1&#xff1a;贪心 从最小正整数 1 开始枚举&#xff0c;设当前数为 num&#xff0c;如果 nums 里没有 target - num&#xff0c;就说明可以添加 num&#xff0c;依次填满直到有 n 个数即可。 用…

【云栖2023】张治国:MaxCompute架构升级及开放性解读

简介&#xff1a; 本文根据2023云栖大会演讲实录整理而成&#xff0c;演讲信息如下 演讲人&#xff1a;张治国|阿里云智能计算平台研究员、阿里云MaxCompute负责人 演讲主题&#xff1a;MaxCompute架构升级及开放性解读 活动&#xff1a;2023云栖大会 MaxCompute发展经历了…

“目标值排列匹配“和“背包组合问题“的区别和leetcode例题详解

1 目标值排列匹配 1.1 从目标字符串的角度来看&#xff0c;LC139是一个排列问题&#xff0c;因为最终目标子串的各个字符的顺序是固定的&#xff1f; 当我们从目标字符串 s 的角度来看 LC139 “单词拆分” 问题&#xff0c;确实可以认为它涉及到排列的概念&#xff0c;但这种…

凯美瑞 vs 太空船:Web3 游戏生长的两条路径

撰文&#xff1a;Teng Yan&#xff08;0xPrismatic&#xff09;&#xff0c;Delphi Digital 研究员 编译&#xff1a;TinTinLand 来源&#xff1a;https://0xprismatic.substack.com/p/my-short-web3-gaming-thesis 经常有人问我关于 Web3 游戏的看法&#xff0c;所以我想以这…

思维模型 超限效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。物极必反。 1 超限效应的应用 1.1 教育中的超限效应 一位老师在课堂上批评了一位学生&#xff0c;这位学生可能会因为老师的批评而感到沮丧和失落。如果老师在接下来的课程中继续批评这位…

Android拖放startDragAndDrop拖拽Glide加载堆叠圆角图,Kotlin(5)

Android拖放startDragAndDrop拖拽Glide加载堆叠圆角图&#xff0c;Kotlin&#xff08;5&#xff09; import android.content.ClipData import android.graphics.Canvas import android.graphics.Point import android.os.Bundle import android.util.Log import android.view.…

到底是什么是Python?语言的核心是什么?

文章目录 前言一、为什么提出python编程的核心是什么&#xff1f;二、Python需要REPL&#xff1f;三、Python的哪些部分需要被视为“Python”&#xff1f;四、需要多少兼容性才能有用&#xff1f;Python技术资源分享1、Python所有方向的学习路线2、学习软件3、精品书籍4、入门学…

SQL表、字段、查询参数获取

SQL工具类表、字段、查询参数提取 1. 执行效果2. 使用2.1 引入依赖2.2 相关实体2.3 工具类 1. 执行效果 2. 使用 2.1 引入依赖 <!-- sql 解析处理--><dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifact…

【教3妹学编程-算法题】2923. 找到冠军 I

3妹&#xff1a;2哥2哥&#xff0c;你看到新闻了吗&#xff1f;襄阳健桥医院院长 公然“贩卖出生证明”&#xff0c; 真是太胆大包天了吧。 2哥 : 我也看到新闻了&#xff0c;7人被采取刑事强制措施。 就应该好好查查他们&#xff0c; 一查到底&#xff01; 3妹&#xff1a;真的…

springboot定时服务

上一篇文章【修改定时时间&#xff0c;定时任务及时生效】 是定时任务与功能项目共用一个&#xff1b; 我目前所在公司的定时服务是专门有一个项目处理&#xff0c;然后定时查询库里面的定时信息配置。 话不多说&#xff0c;上程序 数据库设置 create table SCHEDULER_JOB…

语音识别与自然语言处理(NLP):技术前沿与未来趋势

语音识别与自然语言处理&#xff08;NLP&#xff09;&#xff1a;技术前沿与未来趋势 随着科技的快速发展&#xff0c;语音识别与自然语言处理&#xff08;NLP&#xff09;技术逐渐成为人工智能领域的研究热点。这两项技术的结合&#xff0c;使得机器能够更好地理解和处理人类语…