当前位置: 首页 > news >正文

【Git多人协作开发】不同的分支下的多人协作开发模式

目录

0.前言背景

1.开发者1☞完成准备工作&协作开发

1.1查看分支情况

1.2创建本地分支feature-1

1.3三板斧

1.4push推本地分支feature-1到远程仓库

2.开发者2☞完成准备工作&协作开发

2.1创建本地分支feature-2

2.2三板斧

2.2push推送本地feature-2到远程仓库

3.出现同一分支下多人协作开发问题

3.1查看分支情况

3.2拉取远程feature-2分支

3.3创建本地feature-2分支并且和远程建立联系

3.4三板斧

3.5回到不同分支多人协作开发问题 

4.将内容合并进master分支

4.1无冲突演示feature2

4.2存在冲突演示feature1

4.2.1拉取pull最新master版本

4.2.2feature合并master

4.2.3push推送至远程仓库

4.2.4远程仓库提交PR:master合并feature1

5.删除无用分支feature-1或者feature-2

6.总结模式


0.前言背景

不同分支去实现不同的function

  • 可以是不同开发者实现不同的function使用不同的分支。

  • 可以是不同开发者实现不同的function使用不同的分支。

  • 可以是同一份文件,也可以是不同文件。

  • ❗重点是:不同分支针对是不同的function


  • 目标:远程master分支下新增function1和function2文件。
  • 实现:由开发者1新增function1,由开发者2新增function2。
  • 条件:在不同分支下协作完成,各自让某一个功能私有某一个分支。
  • 重点:在公司里面,都是一个功能function 对应一个分支这样子来玩的。push不会出现冲突问题。
  • 同一分支下多人协作开发场景:push会出现冲突问题。

1.开发者1☞完成准备工作&协作开发

1.1查看分支情况

git branch -a 

查看分支情况(远程分支/本地分支,远程分支是远程分支,本地分支是本地分支)

1.2创建本地分支feature-1

  • 无论是本地创建还是远程创建,都需要基于master的最新一次提交的版本。
  • 在本地创建的feature的时候必须确保基于本地master分支创建的feature-1分支中的master分支相较于远程分支master分支是最新一次提交记录的版本。
  • 好习惯:git checkout master     git pull
  • git checkout -b feature-1:创建本地分支feature-1

1.3三板斧

vim function1

git add function1

git commit -m "add func1"

git push origin feature-1 

1.4push推本地分支feature-1到远程仓库

git push origin feature-1 

注意:在推送本地分支到远程仓库时(远程仓库创建分支的同时),与本地仓库建立联系了

 

2.开发者2☞完成准备工作&协作开发

2.1创建本地分支feature-2

  • 无论是本地创建还是远程创建,都需要基于master的最新一次提交的版本。
  • 在本地创建的feature的时候必须确保基于本地master分支创建的feature-1分支中的master分支相较于远程分支master分支是最新一次提交记录的版本。
  • 好习惯:git checkout master     git pull
  • git checkout -b feature-2:创建本地分支feature-2

【Windows下不用命令直接操作也可】

2.2三板斧

git add function2

git commit -m "add func2"

git push origin feature-2

 

2.2push推送本地feature-2到远程仓库

git push origin feature-2

  • 注意:在推送本地分支到远程仓库时(远程仓库创建分支的同时),与本地仓库建立联系了
  • 发现不同开发者正在协作开发的过程中,并没有解决冲突。是同一份文件的功能开发push推送也不会有冲突
  • 因为是在不同的分支下开发,各自私有的分支,所以不会有冲突。

 

3.出现同一分支下多人协作开发问题

正常情况下,你俩就可以在⾃⼰的分⽀上进⾏专业的开发了!
但天有不测⻛云,你的⼩伙伴突然⽣病了,但需求还没开发完,需要你帮他继续开发,于是他便把feature-2 分⽀名告诉你了。这时你就需要在⾃⼰的机器上切换到 feature-2 分⽀帮忙继续开发,要做的操作如下:

  1. pull拉取远程仓库的feature-2分支到开发者1本地服务器上
  2. 建立联系
  3. 开发然后push推送

3.1查看分支情况

git branch -a 

查看分支情况(远程分支/本地分支,远程分支是远程分支,本地分支是本地分支)

3.2拉取远程feature-2分支

git pull :这里短pull是拉取远程仓库的内容。(而非分支下的内容

3.3创建本地feature-2分支并且和远程建立联系

git checkout -b dev origin/dev:在创建dev分支的时,切换到了本地dev分支下,同时将本地dev分支和远程的dev分支建立了一个连接。

3.4三板斧

vim function2

git add function2

git commit -m "add func2"

git push origin feature-2

3.5回到不同分支多人协作开发问题 

此刻开发者1开发完function-2的1/3内容了,他的亲亲同事病好了。他准备在他的电脑上继续开发。此刻同事电脑上,并没有开发者1开发的内容。所以他需要先拉取pull远程仓库的内容,再继续开发。

  1. 建立远程feature-2分支和本地feature-2分支的联系
  2. 拉取远程仓库feature-2的内容
  3. 继续开发☞完成开发
  4. push推送至远程仓库(已经建立本地和远程的联系☞直接短命令push直接即可)(这里的短命令push就是推送分支底下的内容

 

4.将内容合并进master分支

  • function1和function2二者功能都完成了开发操作,现在需要都merge都master分支上去
  • 解决方案:提交PR申请单
  • 开发人员:PR☞申请单☞审查员:审核(老板、项目经理、技术经理)☞merge
  • 存在两种情况
  1. 【1】开发分支feature直接和主分支master最新一次提交版本merge合并。(没有合并冲突)----演示feature-2

  2. 开发分支feature直接和主分支master最新一次提交版本merge合并存存冲突。--------演示feature-1


开发分支feature直接和主分支master最新一次提交版本merge合并存存冲突。   

  • 若master合并feature,存在冲突,则在master上去解决的。(可能出现更大bug问题
  • 若feature合并master分支,存在冲突,在feature上解决的。再让master合并feature
  • 注意:本地merge合并一定要pull拉取远程仓库最新的一次提交的版本的master分支

【2】本地☞远程

  1. 本地服务器操作:在本地仓库切换至feature-1 mereg合并 本地master分支,存在冲突,手动解决冲突,三板斧提交并且推送push。
  2. 远程服务器操作:在远程仓库master主分支 merge合并feature-1分支  

【3】或者全在本地——前面博文演示过

  1. 在本地仓库切换至feature-1 mereg合并 本地master分支,存在冲突,手动解决冲突,三板斧提交
  2. 切换至本地master分支合并
  3. 最后push推送至远程仓库

4.1无冲突演示feature2

4.2存在冲突演示feature1

4.2.1拉取pull最新master版本

git checkout master

git pull:这里的短命令push就是推送分支底下的内容

4.2.2feature合并master

git checkout feature-1

git merge master

下面页面表示merge的两个分支,没有任何的冲突。Ctrl+x自动退出了

4.2.3push推送至远程仓库

 git push origin feature-1 

注意:在推送本地分支到远程仓库时(远程仓库创建分支的同时),与本地仓库建立联系了

4.2.4远程仓库提交PR:master合并feature1

5.删除无用分支feature-1或者feature-2

6.总结模式

总结:

  1. 每个开发者都私有一个分支去开发各自的功能。(同一文件/不同文件)
  2. 开发完成之后(三板斧)push,基本不会出现冲突。
  3. 会出现小插曲(同事生病等)。
  4. 完成之后需要将开发分支部分合并到master。三个方案☞建议选择:远程和本地混合。

相关文章:

【Git多人协作开发】不同的分支下的多人协作开发模式

目录 0.前言背景 1.开发者1☞完成准备工作&协作开发 1.1查看分支情况 1.2创建本地分支feature-1 1.3三板斧 1.4push推本地分支feature-1到远程仓库 2.开发者2☞完成准备工作&协作开发 2.1创建本地分支feature-2 2.2三板斧 2.2push推送本地feature-2到远程仓库…...

Lua 复数计算器

Lua复数计算器 主要包括复数的加减乘除操作,以及打印 编写复数类 -- ***** 元类 ***** Complex {real 0, imag 0}-- 构造函数 function Complex:new(real, imag)local o o or {}o.real real or 0o.imag imag or 0setmetatable(o, self)self.__index selfr…...

深入MySQL中的IF和IFNULL函数

在数据库查询中,我们经常需要根据条件来决定数据的显示方式。MySQL提供了多种内置函数来帮助我们实现这种条件逻辑,其中IF和IFNULL是两个非常有用的函数。在这篇博客中,我们将深入探讨这两个函数的用法和它们在实际查询中的应用。 IF函数 I…...

AI多模态实战教程:面壁智能MiniCPM-V多模态大模型问答交互、llama.cpp模型量化和推理

一、项目简介 MiniCPM-V 系列是专为视觉-语⾔理解设计的多模态⼤型语⾔模型(MLLMs),提供⾼质量的⽂本输出,已发布4个版本。 1.1 主要模型及特性 (1)MiniCPM-Llama3-V 2.5: 参数规模: 8B性能…...

Docker 搭建Elasticsearch详细步骤

本章教程使用Docker搭建Elasticsearch环境。 一、拉取镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.8.2二、运行容器 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-n...

mysql中提供的函数

文章目录 1.聚合函数2.字符串函数3.数值函数4.日期函数5.流程函数 MySQL 是一个功能强大的关系型数据库管理系统,其中包含了丰富的内置函数,用于处理各种数据操作和查询。这些函数可以分为多种类型,包括字符串函数、数值函数、日期和时间函数…...

加速下载,揭秘Internet Download Manager2024下载器的威力!

1. Internet Download Manager(IDM)是一款广受欢迎的下载管理软件,以其强大的下载加速功能和用户友好的界面著称。 IDM马丁正版下载如下: https://wm.makeding.com/iclk/?zoneid34275 idm最新绿色版一键安装包链接:抓紧保存以…...

oracle 宽表设计

Oracle宽表设计主要涉及到数据库表或视图中字段(列)数量较多的情况。在Oracle 23c及以后的版本中,数据库表或视图中允许的最大列数已增加到4096,这为宽表设计提供了更大的灵活性。以下是对Oracle宽表设计的详细分析: …...

winrar安装好后,鼠标右键没有弹出解压的选项

本来安装挺好的,可以正常使用,有天我把winrar相关的文件挪了个位置,就不能正常使用了。 然后我去应用里面找,找到应用标识了,但是找不到对应的文件夹(因为我挪到另外一个文件夹里了)。 于是我找…...

数字图像处理笔记(一)---- 图像数字化与显示

系列文章目录 数字图像处理学习笔记(一)---- 图像数字化与显示 数字图像处理笔记(二)---- 像素加图像统计特征 数字图像处理笔记(三) ---- 傅里叶变换的基本原理 文章目录 系列文章目录前言一、数字图像处理二、图像数…...

Unity UGUI 之 事件接口

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是事件接口&…...

Hadoop、HDFS、MapReduce 大数据解决方案

本心、输入输出、结果 文章目录 Hadoop、HDFS、MapReduce 大数据解决方案前言HadoopHadoop 主要组件的Web UI端口和一些基本信息MapReduceMapReduce的核心思想MapReduce的工作流程MapReduce的优缺点Hadoop、HDFS、MapReduce 大数据解决方案 编辑 | 简简单单 Online zuozuo 地址…...

Dubbo SPI 之负载均衡

1. 背景介绍 在分布式系统中,负载均衡是一项核心技术,旨在将请求合理地分配到多个服务实例上,以提高系统的性能和可靠性。Dubbo 作为一个高性能的 Java RPC 框架,提供了多种负载均衡策略来满足不同的业务需求。本文将深入探讨 Du…...

规范:前后端接口规范

1、前言 随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。 然…...

Python --NumPy库基础方法(2)

NumPy Numpy(Numerical Python) 是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算,Numpy支持向…...

音视频入门基础:H.264专题(15)——FFmpeg源码中通过SPS属性获取视频帧率的实现

音视频入门基础:H.264专题系列文章: 音视频入门基础:H.264专题(1)——H.264官方文档下载 音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…...

【C++高阶】哈希之美:探索位图与布隆过滤器的应用之旅

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:模拟实现unordered 的奥秘 🌹🌹期待您的关注 🌹🌹 ❀哈希应用 &#x1f4…...

文件包涵条件竞争(ctfshow82)

Web82 利用 session.upload_progress 包含文件漏洞 <!DOCTYPE html> <html> <body> <form action"https://09558c1b-9569-4abd-bf78-86c4a6cb6608.challenge.ctf.show//" method"POST" enctype"multipart/form-data"> …...

通信原理-思科实验三:无线局域网实验

实验三 无线局域网实验 一&#xff1a;无线局域网基础服务集 实验步骤&#xff1a; 进入物理工作区&#xff0c;导航选择 城市家园; 选择设备 AP0&#xff0c;并分别选择Laptop0、Laptop1放在APO范围外区域 修改笔记本的网卡&#xff0c;从以太网卡切换到无线网卡WPC300N 切…...

*算法训练(leetcode)第三十一天 | 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零

刷题记录 *1049. 最后一块石头的重量 II*494. 目标和474. 一和零 *1049. 最后一块石头的重量 II leetcode题目地址 本题与分割等和子集类似&#xff0c;要达到碰撞最后的石头重量最小&#xff0c;则尽可能把石头等分为两堆。 时间复杂度&#xff1a; O ( m ∗ n ) O(m * n)…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...