【Git原理与使用】多人协作与开发模型(2)

目录

一、多人协作

(一)多人协作一

1、情景

2、 origin/master

3、git branch

4、远程链接

5、总结

(二)多人协作二

1、引言

2、情景

3、流程

4、解决方法

二、企业级开发模型

1、DevOps背景

2、DevOps是什么

3、DevCps与git的关系

4、系统开发环境

5、Git分支设计规范

6、企业级项目管理一般流程

7、开发场景一基于gitflow模型的实战


一、多人协作

(一)多人协作一

1、情景

目标:master分支下file.txt文件新增代码“aaa”、“bbb”

实现:由开发者1新增“aaa”,由开发者2新增“bbb”

条件:在一个分支下协作完成

2、 origin/master

目前,我们的仓库中只有一个master主分支,但在实际的项目开发中在任何情况下其实都是不允许直接在master分支上修改代码的,这是为了保证主分支的稳定。所以在开发新功能时,常常会新建其他分支,供开发时进行迭代使用。

3、git branch

只能查看本地分支,要查看远程分支需要加上-r选项。但前提是要pull一下拉取最新的远程仓库,才能看到最新的内容

4、远程链接

切换到本地dev分支,将本地的dev与远程dev进行关系链接

//在切换到dev分支就与远程dev连接

git checkout -b dev origin/dev

//在创建本地dev后忘记连接远程dev可以使用

git   branch --set-upstream  -to=origin/der  dev

5、总结

在同一分支下进行多人协作的工作模式通通常是:

①首先,可以试图用git push origin [branch-name]推送自己的修改

②如果推送失败,则因为远程分支比本地内容新,需要先用git pull试图合并

③如果合并冲突,则解决冲突,并在本地提交

④解决后,再用git push origin dev推送就能成功

⑤功能开发完毕,将分支git merge dev进master,最后删除分支

(二)多人协作二

1、引言

一般情况下,如果有需求需要多人同时进行开发,是不会在一个分支上进行多人开发,而是一个需 或一个功能点就要创建一个feature分支。

2、情景

目标:远程master分支下新增func1和func2文件

实现:由开发者1新增func1,由开发者2新增func2

条件:在不同分支下协作完成

3、流程

(1)开发者1

git branch

git checkout -b feature-1  #新增本地分支fecature-1并切换   

vim func1    #新增需求内容

cat func1   #查看

git add func1  #添加到暂存区

git commit -m  " add func1"    #添加版本库

git push origin feature-1    #将feature-1分支推送到远端

(2)开发者2同理在 feature-2进行专业的开发了

(3)某天开发者2生病,需要你帮助他继续开发,这时你就需要切换到 feature-2分支帮忙开发了

git pull   #必须先拉取远端仓库内容

git branch  -a   #可以看到远程已经有了feature-2

git checkout -b feature-2 origin/feature-2     #切换到 feature-2分支上,可以和远程的feature-2分支关联起来,否则将来只使用git push推送内容会失败

vim func2

cat func2

git add func2

ait commit -m "modify func2"

git push origin feature-2

(4)这时,你的小伙伴开发2修养好了,可以继续他自己的开发工作了,那么他首先要获取到你帮他开发的内容,接着继续开发。

git pull    #失败了,并未pull下来开发/帮忙写的代码,是因为开发2没有指定本地feature-2分支与远程 origin/featnre-2分支的链接。

git branch--set-upstream -to=origin/freature-2    fenture-2

(5)各自开发完毕后,需要合并到master才算完成

(6)开发2开始merge.

git checkout master

git pull    #保证本地masler是最新的内容.

git checkout feature-2    #切到 feature-2分支合并master 

git merger master  #无冲突就继续

git checkout master

git merge feature-2

git push origin master   #将本地master推到远程

(7)开发者1同理,完成后featnre-1可直接在远程仓库删除

4、解决方法

远程分支删除后,本地git branch -a仍能看到的解决方法

git remote show origin  #查看remote 地址远程分支,还有本地分支与之相对应关系等

git remote prune origin   #删除远程仓库不存在的分支




二、企业级开发模型

1、DevOps背景

一个软件从0开始到最终交付,大概包括以下几个阶段:规划编码、构建、测试、发布、部署和维护软开 测 运维但在传统的IT组织下,开发团队(Dev)和运维团队(Ops)之间的诉求不同,双方利益冲突,不利于实现IT价值的最大化

开发团队:追求变化 

运维团队:追求稳定

2、DevOps是什么

(1)为了保障开发和运维之间的鸿沟,需要在文化工具和实践方面的系统变革——DevOps就出现了

(2)Dev Ops(Development 和Operations的组合词”,是一种重视“软件开发人员(Dev)和”IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程、来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。在DevOps的软件开发过程包含计划、编码、构建、测试、预发布、发布 维、监控、由此可见DevOps的强大

3、DevOps与git的关系

一个软件的迭代,在我们开发人员看来,说白了就是对代码进行迭代,那么就需要对代码进行管理。如何管理我们的代码呢,那不就是git(分布式版本控制系统)——所以git对于我们开发人员来说其重要性就不言而喻了。著名的gitee码云就是一种DevOps平台

4、系统开发环境

(1)开发环境:开发环境是程序员专门用于日常开发的服务器。为了开发调试方便,一般打开全部错误报告和测试工具是最基础的环境

(2)测试环境:一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上,该环境是开发环境到生产环境的过渡环境

(3)预发布环境:该环境是为避免因测试环境和线上环境的差异等带来的缺陷漏测而设立的一套环境。其配置等基本和生产环境一致,目的是能让我们发正式环境更有把握

(4)生产环境:是指正式提供对外服务的线上环境

5、Git分支设计规范

(1)

分支名称适用环境
master主分支生产环境
release预发布分支预发布/测试环境
develop开发分支开发环境
feature需求开发分支本地
hotfix紧急修复分支本地

(2)master分支

①为主分支,为只读且唯一。用于部署到正式发布环境,一般由合并release分支得到 代码

②作为稳定的唯一代码库,不允许直接在master上修改

③master分支的推送应该打标签(tag)做记录,方便追溯

④ master分支不可删除

(3) release分支

①release为预发布分支,基于本次上线所有的feature分支合并到develop分支之后,基于develop分支创建。可以部署到测试或须发布集群。

②命名以release/开头建议的命名规则:release/version_publishtime

③主要用于提支给测试人员进行功能测试。发布提测阶段,会以release分支代码为基础进行提测

④如果在release分支测试出问题,需要回归验证develop分支看是否存在此问题

⑤releau属于临时分支,产品上线后可选删除

(4)develop分支

①develop为开发分支,基于master分支创建的只读且唯一分支始终保持最新完成以及bug修复后的代码。可部署到开发环境对应集群

②可根据需求大小程度确定是由feature分支合并,还是直接在上面开发(非常不建议)

(5)feature分支

①feature分支通常为新功能或新特性开发分支,以develop分支为基础创建feature分支

②命名以feature/开头,建议的命名规则:feature/user_createtime_feature.

③新特性或新功能开发完成后,开发人员需合到develop分支

④一旦该需求发布上线,便将其删除

(6)hotfix分支

①为线上bua修复分支或补丁分支,主要用于对线上的版本进行bug修复。当线上出现紧急问题need马上修复,需要基于masber分支创建hotfix分支

②命爷以hotfix/开头,建议的命名规则:hotfix/user_creatime_notfx③当问题修复完成后,need合并到master分支和develop分支并推送远程,一旦修复上线可删

以上跟大家分享的是企业级常用的一种git分支设计规范git flow模型。但是还是要说的是该模型并不适用于所有团队。最主要的还是需要站在团队以及项目的角度组看这个模型是否能简洁的解决问题

6、企业级项目管理一般流程

(1)准备工作

DevOps研发平台—gitee 企业版

(2)创建项目

(3)创建仓库

(4)添加成员

7、开发场景一基于gitflow模型的实战

(1)新需求加入

现有一个订单管理的新需求need开发,首先可以基于develop分支创建一个feature/xxxx_20241024分支

①需求在 分支开发完毕,这时研发人员可以将代码合并到develop分支,将其部署在开发环境的服务器中,方便开发人员进行测试和调试

a、开发者在feature分支下发起请求评审

b、审查员审查代码

C、审查通过,合并分支

d、合并成功、查看结果

②在develep下开发人员自测通过后,先确定下develop不存在

未测试完毕的需求,然后研发人员可基于develop分支创建一个release/xxx分支出来,可交由测试人员进行测试

③测试人员测试release通过后,就可将代码合并入master

④测试人员在master测试通过后,便可删除feature/xxx分支

(2)修复测试环境Bug

在develp测试出现了Bug,建议在feature分支上修复

(3)修复预发布环境Bug

在release测试出现了Bug,首先要回归develop分支是否同样存在问题

(4)修复正式环境Bug

在master测试出了问题,要回归release和develop

(5)紧急修复正式环境Bug

上线后出现Bug,紧急修复的。可基于master创建hotfix/xxxx分支,修复后发布到master验证完毕后,将master合并到develop,同时删掉hotfix/×xx分支

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

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

相关文章

ACM digital library的高级检索

内容来自ACM Digital Library的高级检索 (tsinghua.edu.cn) 1.搜索源 默认的是ACM出版的全文数据库(检索免费,阅读付费需订阅,通过各学校校园网免费阅读全文) The ACM Guide to Computing literature用于检索计算机学科文献,除…

B端管理系统要提升,观摩优秀作品是捷径之一。

观摩优秀的作品可以帮助B端管理系统的设计团队不断学习和进步,从而提升系统的设计水平和用户体验,为企业的发展和竞争力提供有力的支持。 这里分享一批国外的优秀B端系统界面,供大家欣赏。

【毕业设计】基于 PHP 开发的社区交流系统

基于 PHP 开发的社区交流系统可以是一个论坛、博客平台或是问答网站等形式的在线平台,用于用户之间的互动交流。以下是一个简单的 PHP 社区交流系统的示例,包括用户注册、登录、发布帖子、回复帖子等功能。 技术栈 前端:HTML, CSS, JavaScr…

【vue】vue3+ts对接科大讯飞大模型3.5智能AI

如今ai步及生活的方方面面,你是否也想在自己的网站接入ai呢&#xff1f;今天分享科大讯飞大模型3.5智能AI对接。 获取APPID、APISecret、APIKey 讯飞开放平台注册登录控制台创建自己的应用复制备用 准备工作做好,直接开始上代码了。 源码参考 <script setup lang"t…

软件自动定时启动器-添加可执行文件软件,设置启动的时间,也可以设置关闭的时间-供大家学习研究参考

点击添加软件&#xff0c;可以添加可执行文件软件&#xff0c;设置启动的时间&#xff0c;也可以设置关闭的时间 注意&#xff0c;时间为00&#xff1a;00&#xff1a;00 等于没设置&#xff0c;这个时间不在设置范围&#xff0c;其他任何时间都可以。 下载地址&#xff1a; h…

飞驰云联FTP替代方案:安全高效文件传输的新选择

FTP协议广泛应用各行业的文件传输场景中&#xff0c;由于FTP应用获取门槛低、使用普遍&#xff0c;因此大部分企业都习惯使用FTP进行文件传输。然而面临激增的数据量和网络安全威胁的不断演变&#xff0c;FTP在传输安全性与传输性能上有所欠缺&#xff0c;无法满足企业现在的高…

tomcat服务器

tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器。Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样&#xff0c;具有处理 HTML 页面的功能&#xff0c;然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx&#x…

【Vue】VueRouter路由

系列文章目录 第七章 VueRouter路由 文章目录 系列文章目录第一节&#xff1a;VueRouter基础一、安装&#xff1a;二、基本使用&#xff1a;1. 创建路由代码&#xff1a;Single Page Application&#xff1a;SPA2. 使用路由3. 展示路由&#xff1a; 二、嵌套路由三、路由传参1…

【自动驾驶】控制算法(九)深度解析车辆纵向控制 | 从算法基础到 Carsim 仿真实践

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

计算机网络33——文件系统

1、chmod 2、chown 需要有root权限 3、link 链接 4、unlink 创建临时文件&#xff0c;用于非正常退出 5、vi vi可以打开文件夹 ../是向外一个文件夹 6、ls ls 可以加很多路径&#xff0c;路径可以是文件夹&#xff0c;也可以是文件 ---------------------------------…

科创孵化昌平,创新创业求发展

昌平区&#xff0c;作为北京市科技创新和产业发展的新高地&#xff0c;近年来在多个前沿领域展现出蓬勃的生命力和巨大的发展潜力。在这片充满活力的土地上&#xff0c;青年创业者们正以前所未有的热情和智慧&#xff0c;投身于创新创业的大潮中&#xff0c;共同书写着昌平区发…

qt操作excel(QAxObject详细介绍)

一.QAxObject 概念介绍 QAxObject 是 Qt 框架中的一个类&#xff0c;专门用于与 ActiveX 控件和 COM&#xff08;组件对象模型&#xff09;对象进行交互。它为开发者提供了一种方便的方式来使用 Windows 平台上的 COM 组件&#xff0c;使得在 Qt 应用程序中调用这些组件的功能…

使用requestAnimationFrame实现精准倒计时

实现精准倒计时是一个常见的需求&#xff0c;尤其是在开发活动预告、限时优惠、赛事计时等场景中。实现精准倒计时的关键在于精确计算剩余时间&#xff0c;并确保时间更新的频率足够高&#xff0c;以保证显示时间的准确性。以下是一些实现精准倒计时的方法和技巧&#xff1a; …

python植物大战僵尸项目源码【免费】

植物大战僵尸是一款经典的塔防游戏&#xff0c;玩家通过种植各种植物来抵御僵尸的进攻。 源码下载地址&#xff1a; 植物大战僵尸项目源码 提取码: 8muq

Broadcast:Android中实现组件及进程间通信

目录 一&#xff0c;Broadcast和BroadcastReceiver 1&#xff0c;简介 2&#xff0c;广播使用 二&#xff0c;静态注册和动态注册 三&#xff0c;无序广播和有序广播 1&#xff0c;有序广播的使用 2&#xff0c;有序广播的截断 3&#xff0c;有序广播的信息传递 四&am…

基于Python flask的淘宝商品数据分析可视化系统,包括大屏和主题分析,还有回归预测

背景介绍 随着电子商务的迅猛发展&#xff0c;平台上积累了大量的用户行为和商品交易数据。这些数据蕴含着极大的商业价值&#xff0c;可以为市场趋势预测、商品优化以及用户行为分析提供重要的参考。淘宝作为全球最大的在线购物平台之一&#xff0c;拥有海量的商品和用户数据…

文件操作

1.文件的打开和关闭 文件在读写之前应该先打开文件&#xff0c;在使用结束之后应该关闭文件。 在编写程序的时候&#xff0c;在打开文件的同时&#xff0c;都会返回一个FILE*的指针变量指向该文件&#xff0c;也相当于建立了指针和文件的关系。ANSI C规定使用fopen函数来打开文…

《计算机网络名词解释》

1.计算机网络 计算机网络就是指&#xff0c;将分布在不同地理位置、具有独立功能旳多台计算机及其外部设备&#xff0c;用通信设备和通信线路连接起来&#xff0c;在网络操作系统和通信合同及网络管理软件旳管理协调下&#xff0c;实现资源共享、信息传递旳系统。 2.通信链路…

DockerLinux安装DockerDocker基础

Linux软件安装 yum命令安装 通过yum命令安装软件,是直接把软件安装到Linux系统中 安装和卸载都比较麻烦,因为软件和系统是强关联的 Docker docker是一种容器技术,可以解决软件和系统强关联关系,使得软件的安装和卸载更方便,它可以将我们的应用以及依赖进行打包,制作出一个镜…

5万字讲解大模型语言高效推理研究(清华综述)

1.1背景介绍 近年来&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;受到学术界和工业界的广泛关注&#xff0c;得益于其在各种语言生成任务上的出色表现&#xff0c;大语言模型推动了各种人工智能应用&#xff08;例如ChatGPT、Copilot等&#xf…