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

news/2024/9/20 6:01:55 标签: git, elasticsearch, 大数据

目录

一、多人协作

(一)多人协作一

1、情景:

2、 origin/master

git%20branch-toc" style="margin-left:80px;">3、git branch

4、远程链接

5、总结

(二)多人协作二

1、引言

2、情景

3、流程

4、解决方法

二、企业级开发模型

1、DevOps背景

2、DevOps是什么

git%E7%9A%84%E5%85%B3%E7%B3%BB-toc" style="margin-left:80px;">3、DevCps与git的关系

4、系统开发环境

5、Git分支设计规范

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

gitflow%E6%A8%A1%E5%9E%8B%E7%9A%84%E5%AE%9E%E6%88%98-toc" style="margin-left:80px;">7、开发场景一基于gitflow模型的实战


一、多人协作

(一)多人协作一

1、情景:

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

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

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

2、 origin/master

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

git%20branch" style="margin-left:0px;">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的强大

git%E7%9A%84%E5%85%B3%E7%B3%BB" style="background-color:transparent;margin-left:0px;">3、DevCps与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/usercreatetimefeature.

③新特性或新功能开发完成后,开发人员需合到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)添加成员

gitflow%E6%A8%A1%E5%9E%8B%E7%9A%84%E5%AE%9E%E6%88%98" style="background-color:transparent;margin-left:0px;">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测试出了 题 回归 Yelease和develop

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

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


http://www.niftyadmin.cn/n/5666683.html

相关文章

涛思数据库安装和卸载

安装 cd opt/taos/TDengine-server-2.4.0.5 sudo ./install.sh 启动taos​ 安装后,请使用 systemctl 命令来启动 TDengine 的服务进程 systemctl start taosd检查服务是否正常工作: systemctl status taosd 升级 3.0 版在之前版本的基础上&#x…

PostgreSQL 向量数据存储指南

引言 在当今的数字化时代,数据存储的方式和技术正变得越来越复杂和多样化。随着机器学习和数据科学的发展,向量数据的存储和管理变得尤为重要。本文将详细介绍如何使用 Java 和 PostgreSQL 数据库来存储向量数据,探索其应用场景、优势以及具…

Go 并发模式:扩展与聚合的高效并行

当你搭建好一个管道系统后,数据在各个阶段之间顺畅地流动,并根据你设定的操作逐步转换。这一切看起来像是一条美丽的溪流,然而,为什么有时候这个过程会如此缓慢呢? 在处理数据时,某些阶段可能会非常耗时,导致上游的阶段被阻塞,无法继续处理数据。这不仅影响了管道的整…

Log4j2—漏洞分析(CVE-2021-44228)

文章目录 Log4j2漏洞原理漏洞根因调用链源码分析调用链总结 漏洞复现dnsrmi Log4j2漏洞原理 前排提醒:本篇文章基于我另外一篇总结的JNDI注入后写的,建议先看该文章进行简单了解JNDI注入: https://blog.csdn.net/weixin_60521036/article/de…

Go 第二期

探究技术的本质,享受技术的乐趣!这一期我们来聊聊Go中的数据类型,以及基本的逻辑结构。这一讲分为两个部分,第一部分,我先会和你谈谈我对类型的认知,然后谈谈Go中所支持的数据类型,第二部分&…

SMS over IP原理

目录 1. 短消息业务的实现方式 2. 传统 CS 短消息业务中的发送与送达报告 3. MAP/CAP 信令常见消息 4. SMS over IP 特点概述 5. SMS over IP 中的主要流程 5.1 短消息注册流程(NR 或 LTE 接入) 5.2 短消息发送(MO)流程(NR 或 LTE 接入) 5.3 短消息接收(MT)流程(NR 或…

两台虚拟机之分布式部署

Apache2 和 PHP 安装 在虚拟机1上执行以下步骤: 更新系统包列表: sudo apt update安装 Apache2: sudo apt install apache2 -y安装 PHP 及其扩展: sudo apt install php libapache2-mod-php php-mysql配置Apache和PHP sudo nano /etc/apache2/mods-enabled/dir.conf#…

图书管理系统(面向对象的编程练习)

图书管理系统(面向对象的编程练习) 1.系统演示2.设计框架讲解3.代码的详细讲解3.1 多本书籍的实现3.2 不同操作人员的实现3.3 不同work操作的实现 1.系统演示 下面主要展示系统的删除图书功能和显示图书功能,帮助大家在开始写代码前先了解图…