Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

我的博客:<但凡.

我的专栏:《编程之路》、《数据结构与算法之美》、《C++修炼之路》、《Linux修炼:终端之内 洞悉真理》、《Git 完全手册:从入门到团队协作实战》

感谢你打开这篇博客!希望这篇博客能为你带来帮助,也欢迎一起交流探讨,共同成长。

        今天这期主要来介绍一下团队协作开发的场景,并简单介绍一下企业开发模型。 

目录

1、多人协作模拟准备工作

2、多人协作开发场景一

3、多人协作开发场景二

4、企业级开发模型

        4.1、系统开发环境

        4.2、Git 分支设计

        4.3、DevOps研发平台


1、多人协作模拟准备工作

        目前我们在Linux系统上连接了远端仓库,另一个用户我们用windows系统链接远端仓库进行模拟。

        首先,我们在windows系统上新建一个文件夹,接下来我们在文件夹中右键,点击在终端中打开,接着我们以HTTP协议的方式克隆仓库(前提是windows系统上安装了git):

        克隆好之后,我们可以发现文件夹中新出现了一个文件夹,这个文件夹就是我们的工作区,我们点进去,发现他克隆下了所有的远端仓库的文件。

        接下来,我们尝试新增一些东西,并且在终端中push到远程仓库中,发现链接没有问题。为了接下来演示方便,我清空了仓库中所有自己新建的文件。

        为了演示方便,我们事先新建两个分支,分别为codetest1,codetest2

        我们还得删除分支,删除本地分支不多说了,我们想要删除远端分支需要执行以下命令:

git push origin --delete <branch_name>

        或者直接再gitee官网上删除掉。 

        我们在Linux系统上新建好两个分支,推送到远端,然后在windows上pull远端仓库(反过来也可以)。 

        然后我们设置上游分支,让本地和远端的分支都对应上:

    git branch --set-upstream-to=origin/<branch> codetest1

        我们也可以在推送的时候使用以下命令设置:

git push --set-upstream origin codetest1

        我们可以使用以下命令检测分支的跟踪状态:

git branch -vv

        接下来我们切换到另一个系统上,先把远端分支pull一下,然后我们新建两个同名的分支,把这两个分支和远端的两个分支对应的链接起来:

         我们主要使用了以下命令让本地分支和远端分支对应建立连接:

    git branch --set-upstream-to=origin/<branch> codetest1

        以后我们想要推送东西,切换到对应的分支并且直接push就可以了,不需要push -u加分支名了。 

2、多人协作开发场景一

        我们首先模拟一下同分支下的协作开发场景。

目标:用户一和用户二在codetest1分支下对同一文件进行修改

用户一:新增字符串“aaa”

用户二:新增字符串"bbb"

        首先我们得新建一个文本文件,我们就用windows系统来新建:

        接着我们执行以下命令把这个文件推送到远端:

git push

        接下来我们新增文本“aaa”,然后在提交到远端。当然我们也可以新建文件后立刻新增文本然后推送。

        然后我们切换到Linux系统上,首先我们拉取远端仓库,然后新增文本,再推送到远端仓库:

        假设说我们用户二在拉取仓库时,用户一还没有新增文本"aaa",这时候用户二和用户一在推送时必然会发生冲突的。现在假设远端是aaa,用户二是bbb,我们模拟一下发生冲突了该怎么办:

         我们尝试推送,会报类似以下错误:

        这时候我们应该首先pull,然后再次尝试推送。 

        在完成文件的修改之后,我们还得把远端的codetest1分支合并到master上。

        方法一:

        我们可以直接在gitee官网上进行合并,合并之后在拉取到两个系统上。 

         这种方式需要我们提交申请,然后在管理和测试通过后才能合并。当然了由于我们现在之后一个人,管理和审核都是自己,我们直接全部同意掉就好了。

         接着我们在两个用户上把远端仓库的内容都拉取过来就可以了。

        方法二:

        我们在其中一个用户上实现分支的合并,接下来我们把合并完成后的分支推送到远端,然后另一个用户再进行拉取操作。如果有冲突,我们需要打开文件手动修改。操作不难就不演示了。

        最后别忘了删除没用的分支。但是我们这次先不删除因为接下来还要用。

3、多人协作开发场景二

目标:多用户在不同分支下完成开发任务

用户一:在codetest1分支上新增文件

用户二:在codetest2分支上新增文件

        首先我们在windows系统上新增文件,然后推送到远端:

         接下来我们切换到Linux系统上执行同样的操作:

        需要注意的是,我们实际的开发情况应该是windows系统只有codetest1分支,Linux系统只有codetest2分支,但是由于我们使用的是之前的分支所以说我们Linux系统也有codetest1分支,这就导致我们在push之前必须先把codetest1的拉取下来。但是在实际开发过程中我们直接在codetest2推送就可以了。 

        接着我们完成分支的合并。这次我们使用先在本地完成合并,在推送到远端的方式。

        首先,在windows系统上,我们拉取,然后合并,接着推送到远端。

        然后切换到Linux系统,我们同样在master分支上拉取,然后合并,最后在推送到远端。

        最后我们windows系统从远端拉取一下即可。 

4、企业级开发模型

        我们的软件从新建文件到产品落地,大概经历以下几个阶段:规划,编码,构建,测试,发布,部署和维护。

        规划,编码,构建是开发人员的工作,测试是测试人员的工作,发布,部署,维护是运维人员的工作。

        其实软件开发工程师和运维工程师之间存在一些鸿沟,因为开发工程师往往想追求变化,一次次的优化版本,而运维工程师追求稳定,控制软件的变更。为了弥合这个鸿沟,DevOps正式登上舞台。

        那么这个DevOps是什么东西呢?DevOps 是软件开发(Development)和 IT 运维(Operations)的结合,旨在通过自动化、协作和持续改进来缩短软件交付周期,提高系统可靠性和效率。其核心理念是通过打破开发与运维之间的壁垒,实现更快的迭代和更高质量的交付。总结一下,DevOps是一种方法论,我们可以通过这种思想,这种方法来提高开发的效率。

        我们之后会介绍一下DevOps的研发平台。

        4.1、系统开发环境

        我们介绍一下几个常用的开发环境:

        第一个是开发环境,这是开发人员们日常用于开发的服务器。

        第二个是测试环境,测试环境是开发环境和之后的过度环境,毕竟一个软件必须经过测试才能上线。

        第三个是预发布环境,这个环境的作用其实也是测试,只不过测试的人换了,为了避免因测试环境和线上环境的差异带来的影响,这个环境是和线上环境基本保持一致的,并且由一些非测试人员来测试,也就是未来的用户们来测试。

        第四个就是生产环境,生产环境是指正式提供对外服务的线上环境,例如我们目前在移动端能访问的app都是生产环境。

        当然了对于大规模公司可能还有会其他的环境,比如仿真/灰度环境

        4.2、Git 分支设计

        对于一个公司来说,这个公司不同岗位的程序员会使用不同的分支,也就是说会环境是和分支匹配的,环境不同,分支也就不同。

        比如我们的master分支是主分支,适用环境是生产环境,release分支一般是预发布/测试环境...

        注:图片来源网络

        一般小的公司可能分支体系没这么完善,但是master分支和develop分支是一定要有的。master分支为主分支,部署正式发布环境,而develop分支为开发分支,始终保持最新完成以及bug修复后的代码。

        我们再介绍一下其他的分支:

        feature分支是新功能或者新特性开发分支,以develop分支为基础创建的。新特性开发完成后需要合并到develop分支。

        release分支是预发布分支,主要用于提交给测试人员的代码进行功能测试,此分支基于develop分支创建,并且在产品上线后删除。

        hofix分支为线上bug分支,对于线上版本进行bug修复,当 bug修复完成后可删除。

        上面介绍的企业分支模型是Git Flow模型,是一种常用的分支设计。 一些大厂还有自己常用的分支模型,比如阿里的飞流flow分支模型。

        4.3、DevOps研发平台

         DevOps研发平台不止一个,我们使用Gitee的研发平台举例

        Gitee 企业版 - 企业级 DevOps 研发效能平台

        注册好之后,我们按照以下流程新建一个项目: 

        我们可以给项目中添加成员:

        在新建仓库时,我们可以选择分支模型:

         我们创建好仓库后,可以直接点击加号新建文件:

        我们切换其他的分支,新建文件后,可以在加号中找到请求评审,评审完成之后就可以合并分支,

        我们也可以在分支管理中新建分支:

        好了,今天的内容就分享到这,我们下期再见! 

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

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

相关文章

解决Spring事务中RPC调用无法回滚的问题

文章目录问题分析解决方案实现原理解析执行流程说明运行实例正常流程执行执行异常流程关键优势在分布式系统开发中&#xff0c;我们经常会遇到本地事务与远程服务调用结合的场景。当本地事务包含RPC调用时&#xff0c;如果事务回滚&#xff0c;RPC调用已经执行就会导致数据不一…

sqli-labs通关笔记-第13关 POST报错型注入(单引号括号闭合 手工注入+脚本注入两种方法)

目录 一、字符型注入 二、limit函数 三、GET方法与POST方法 四、源码分析 1、代码审计 2、SQL注入安全分析 3、报错型注入与联合注入 五、渗透实战 1、进入靶场 2、注入点分析 &#xff08;1&#xff09;SQL语句 &#xff08;2&#xff09;admin) #注入探测 &…

康复器材动静态性能测试台:精准检测,为康复器械安全保驾护航

在康复医疗领域&#xff0c;无论是轮椅、拐杖、假肢还是康复床&#xff0c;每一件器械的强度与稳定性都直接关系到使用者的安全与康复效果。如何确保这些器械在实际使用中经得起反复考验&#xff1f;Delta德尔塔仪器推出的康复器材动静态性能测试台&#xff0c;凭借其高精度、智…

vue3中el-table表头筛选

效果如下&#xff0c;可以勾选表头进行隐藏&#xff0c;也可以对表头进行拖动排序index主界面 <script> let tempHead []; const showFilter ref<boolean>(false); let tableHeadList ref<TableHeadItem[]>([{ prop: "displayId", label: "…

数据结构 之 【排序】(直接选择排序、堆排序、冒泡排序)

目录 1.直接选择排序 1.1直接选择排序的思想 1.2直接选择排序的代码逻辑 1.3完整排序代码 1.3.1一次只选一个最值 1.3.2一次筛选出两个最值 1.4直接选择排序的时间复杂度与空间复杂度 2.堆排序 2.1堆排序的思想 2.2堆排序的具体步骤 2.3堆排序图解 2.4完整排序代码…

用手机当外挂-图文并茂做报告纪要

前阵参加一个峰会,看到演讲嘉宾每翻一页PPT,下面的观察就举起手机一顿拍。实话说这种拍下来的,难说还会拿出来看,而且再看的时候也未必能对应到当时主讲人的一些解释 。 如果现场将图片保存到笔记本电脑,并快速记录关键信息,这样听完一个报告可能就直接输出一篇报道了。 有…

Vue的ubus emit/on使用

这段代码是 Vue.js 组件中的 mounted 生命周期钩子函数&#xff0c;主要作用是监听一个名为 “macSelectData” 的全局事件。具体行为如下&#xff1a;分步解释&#xff1a;mounted() 生命周期钩子 当组件被挂载到 DOM 后&#xff0c;Vue 会自动调用 mounted() 方法。这里常用于…

rsync报错解决

问题说明 [rootlocalhost shyn]# rsync -avz --checksum "root192.168.159.133:/tmp/shyn" "/tmp /shyn"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! …

ArKTS: DAL,Model,BLL,Interface,Factory using SQLite

HarmonyOS 用ohos.data.rdb 用DBHelper.ets 共用调用SQLite 库&#xff0c;进行DAL,Model,BLL,Interface,Factory 框架模式&#xff0c;表为CREATE TABLE IF NOT EXISTS signInRecord ( id INTEGER PRIMARY KEY AUTOINCREMENT, employeeId TEXT NOT NULL, employeeName TEXT NO…

MySQL JSON 数据类型用法及与传统JSON字符串的对比 JSON数据类型简介

文章目录前言1. 基本用法JSON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引支持JSON存储对象和数组的性能考虑1. 存储对象2. 存储数组性能对比总结最佳实践建议前言 MySQL从 5.7 版本开始引入了 JSON 数据类型&#xff0c;专门用于存储 JSON 格式的数据。与传…

C++:list(1)list的使用

list的使用一.list基本的结构1.环状双向链表2.哨兵节点3.迭代器4.节点结构5.链表遍历6.迭代器失效二.list的基本使用1.test01函数&#xff1a;主要测试std::list的初始化方式及遍历2.test02函数&#xff1a;主要测试std::list的常用成员函数操作3.测试结果如下三.list的其他操作…

ArcGIS地形起伏度计算

地形起伏度计算地形起伏度步骤1&#xff1a;计算最大值。步骤2&#xff1a;计算最小值。步骤3&#xff1a;计算地形起伏度。地形起伏度、地形粗糙度、地表切割深度和高程变异系数均为坡面复杂度因子&#xff0c;是一种宏观的地形信息因子&#xff0c;反映的是较大的区域内地表坡…

llama factory新手初步运行完整版

1、新建conda环境名称为llama_factory&#xff0c;并激活 conda create -n llama_factory python3.10 conda activate llama_factory2、激活后可检查内部包是否纯净&#xff0c;要确保环境内包较纯净&#xff0c;不然后续安装对应包会出现一系列水土不服的问题&#xff0c;导致…

Tomcat与JDK版本对照全解析:避坑指南与生产环境选型最佳实践

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 持续学习&#xff0c;不断…

短视频矩阵的未来前景:机遇无限,挑战并存

在当今数字化信息飞速传播的时代&#xff0c;短视频以其独特的魅力迅速席卷全球&#xff0c;成为人们获取信息、娱乐消遣的重要方式之一。短视频矩阵作为一种高效的内容传播与运营模式&#xff0c;正逐渐展现出其强大的影响力和潜力。本文将深入探讨短视频矩阵的未来前景&#…

【数据结构】哈希——位图与布隆过滤器

目录 位图&#xff1a; 引入 位图实现&#xff1a; 位图的结构 插入数据(标记数据) 删除数据(重置数据) 查找数据 位图完整代码&#xff1a; 位图的优缺点&#xff1a; 布隆过滤器&#xff1a; 引入 布隆过滤器实现&#xff1a; 布隆过滤器的结构&#xff1a; 插入…

本地运行C++版StableDiffusion!开源应用StableVerce发布

本地运行C版StableDiffusion&#xff01;开源应用StableVerce发布 StableVerse是一个用C开发的本地运行的图形工具。适合初学者快速入门&#xff1b;适用于办公室工作人员的文本和图像制作的小规模计算能力场景。 开源地址&#xff1a;https://github.com/kelvin-luo/StableVer…

OpenLayers 快速入门(七)矢量数据

看过的知识不等于学会。唯有用心总结、系统记录&#xff0c;并通过温故知新反复实践&#xff0c;才能真正掌握一二 作为一名摸爬滚打三年的前端开发&#xff0c;开源社区给了我饭碗&#xff0c;我也将所学的知识体系回馈给大家&#xff0c;助你少走弯路&#xff01; OpenLayers…

【PTA数据结构 | C语言版】关于堆的判断

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 将一系列给定数字顺序插入一个初始为空的最小堆。随后判断一系列相关命题是否为真。命题分下列几种&#xff1a; x is the root&#xff1a;x是根结点&#xff1b;x and y are siblings&#xff1a…

[CH582M入门第十步]蓝牙从机

前言 学习目标: 1、初步了解BLE协议 2、BLE从机代码解析 3、使用手机蓝牙软件控制CH582M从机LED亮灭一、蓝牙介绍 蓝牙(Bluetooth)是一种短距离无线通信技术,主要用于设备之间的数据传输和通信。它由爱立信(Ericsson)于1994年提出,现由蓝牙技术联盟(Bluetooth SIG)维…