【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端系统界面,供大家欣赏。

【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…

【自动驾驶】控制算法(九)深度解析车辆纵向控制 | 从算法基础到 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;也可以是文件 ---------------------------------…

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函数来打开文…

DockerLinux安装DockerDocker基础

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

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

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

使用Mockito进行单元测试

1、单元测试介绍 Mockito和Junit是用于单元测试的常用框架。单元测试即&#xff1a;从最小的可测试单元&#xff08;如函数、方法或类&#xff09;开始&#xff0c;确保每个单元都能按预期工作。单元测试是白盒测试的核心部分&#xff0c;它有助于发现单元内部的错误。 单元测试…

iOS 巨魔神器,Geranium 天竺葵:6大功能,个个都解决痛点

嘿&#xff0c;这是黑猫。如果你装了巨魔&#xff0c;却只知道安装第三方APP&#xff0c;那就是暴殄天物。巨魔的价值不仅是应用侧载&#xff0c;还有强大的玩机工具生态——这也是我花费大量时间&#xff0c;去制作巨魔精选IPA合集的原因。 通过巨魔商店安装的APP&#xff0c…

Qt:智能指针QScopedPointer 的使用(以及如何写一个QScopedPointer )

前言 本文讲述QScopedPointer 的使用&#xff0c;以及自己如何写一个QScopedPointer . 正文 QScopedPointer 的常用方法 以下是 QScopedPointer 的一些常用方法及其详细说明&#xff1a; 构造函数&#xff1a; QScopedPointer<T> ptr(new T);用于创建一个 QScopedPoi…

LeetCode_sql_day28(1767.寻找没有被执行的任务对)

描述&#xff1a;1767.寻找没有被执行的任务对 表&#xff1a;Tasks ------------------------- | Column Name | Type | ------------------------- | task_id | int | | subtasks_count | int | ------------------------- task_id 具有唯一值的列。 ta…

我的创作纪念日-20240919

何尝不是一种纪念。 话说&#xff0c;毕业之后和大学同学去深圳&#xff0c;后面回家考编制&#xff0c;现在在家里的中国邮政的代理金融网点上班。

【开放词汇检测】基于MMDetection的MM-Grounding-DINO实战

文章目录 摘要安装基础环境新建虚拟环境安装pytorch安装openmim、mmengine、mmcv安装 MMDetection验证安装配置OV-DINO环境 MMDetection的MM-Grounding-DINO详细介绍测试结果Zero-Shot COCO 结果与模型Zero-Shot LVIS ResultsZero-Shot ODinW&#xff08;野生环境下的目标检测&…