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

目录

0.前言场景

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

1.1创建dev分支开发 

1.2拉取远程dev分支至本地

1.3查看分支情况和分支联系情况

1.4创建本地dev分支且与远程dev分支建立联系

1.5在本地dev分支上开发file.txt

1.6推送push至远程仓库

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

2.1创建git目录

2.2powershell页面

2.3https协议克隆远程仓库

2.4查看分支情况且创建本地分支

2.5远程dev分支和本地dev分支建立连接

2.6windows图形化界面直接开发

2.7三板斧☞推送push

3.push出现冲突 

4.将内容合并进master分支

5.删除无用分支dev

6.总结模式


0.前言场景

目标:远程master分支下file.txt文件新增"aaa"、"bbb"。

实现:由开发者1新增"aaa",由开发者2新增"bbb"。

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

【目前远程仓库的状态】

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

1.1创建dev分支开发 

 ❓怎么模拟两个开发者

Linux环境下和windows环境下都去克隆远程仓库就可以模拟两个开发者。

❓开发者1和2都是基于同一分支开发的

  • 肯定不是master分支(master分支是一个稳定的分支)
  • 创建一个其他dev分支来开发(本地或远程都可以创建)
  • 注意:无论是本地创建还是远程创建,都需要基于master的最新一次提交的版本。
  • 分支起点:基于哪个分支新建一个分支。

❗这里【演示在远程创建】☞然后pull拉取☞本地仓库

注意:这里创建的dev分支就是基于master最新一次提交版本来创建的。

 【远程创建】

1.2拉取远程dev分支至本地

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

1.3查看分支情况和分支联系情况

  • git branch -a 在本地仓库查看本地分支和远程分支
  • 注意:本地的修改 必须在本地的分支上去操作,由本地push推送至远程的分支,不能直接在本地切换到远程的分支下去修改。相当于直接修改远程的分支下的某些内容。

  • git branch -vv查看本地分支和远程分支建立连接

1.4创建本地dev分支且与远程dev分支建立联系

  • 【建立联系情况1】:远程仓库存在dev分支,在本地仓库创建dev分支同时和远程仓库建立联系。
  • git checkout -b dev origin/dev
  • 在创建dev分支的时,切换到了本地dev分支下,同时将本地dev分支和远程的dev分支建立了一个连接。

1.5在本地dev分支上开发file.txt

  • vim file.txt
  • git add .
  • git commit -m " "

1.6推送push至远程仓库

  • git push
  • 因为上面已经建立了连接可以使用push操作的短命令

 

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

2.1创建git目录

2.2powershell页面

2.3https协议克隆远程仓库

2.4查看分支情况且创建本地分支

2.5远程dev分支和本地dev分支建立连接

  •  【建立联系情况2】:远程仓库由dev分支,本地仓库也创建了dev分支。
  • git branch --set-upstream-to=origin/dev dev

2.6windows图形化界面直接开发

2.7三板斧☞推送push

3.push出现冲突 

此刻出现以下情况:

  1. 先使用 git pull:将远程仓库的file.txt的内容拉取到到开发者2的本地仓库中(发生本地合并冲突)
  2. 在开发者2的本地服务端:解决冲突
  3. 再次提交,再次推送

 

4.将内容合并进master分支

  • master分支是没有这两行代码的。原因是master分支没有进行merge合并dev分支操作的。(所以是没有新增内容的)
  • 在工作中推荐使用PR申请单,因为PR需要经过审查员的审核的。审查员都是老板,项目经理对,开发代码都是有保障性质的。才能确保master分支是一个稳定的状态。

  • 两种解决方案
  1. 远程:PR☞申请单☞审查员审核(老板、项目经理)☞merge
  2. 本地:在本地服务器上merge操作☞再推送至远程仓库
  • 本地:merge操作
  1. 注意合并的master都是最新一次提交记录的版本(最新的❗)所以需要需要pull拉取远程仓库最新版本的master分支内容。master:pull
  2. 好习惯:切换到dev分支上先merge合并master分支,存在冲突在dev分支上解决,再次提交。dev merge master
  3. 切换至master分支之后再次合并dev分支。master merge dev
  4. 最后再push远程仓库。master:push

【master:pull】 

【dev merge master】

【master merge dev】

【master:push】

5.删除无用分支dev

6.总结模式

总结⼀下,在同⼀分⽀下进⾏多⼈协作的⼯作模式通常是这样:

  • 首先,可以试图⽤ git push origin branch-name 推送⾃⼰的修改;
  • 如果推送失败,则因为远程分⽀⽐你的本地更新,需要先⽤ git pull 试图合并;
  • 如果合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再⽤git push origin branch-name推送就能成功!
  • 功能开发完毕,将分⽀ merge 进 master,最后删除分⽀。 

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

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

相关文章

C++第十弹 ---- vector的介绍及使用

目录 前言vector的介绍及使用1. vector的使用1.1 vector的定义1.2 iterator的使用1.3 vector空间增长问题1.4 vector增删查改 2. vector迭代器失效问题(重点) 总结 前言 本文介绍了C中的vector数据结构及其使用方法。 更多好文, 持续关注 ~ 酷酷学!!! 正文开始 vector的介绍…

GPT-4O 的实时语音对话功能在处理多语言客户时有哪些优势?

最强AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量 我瞄了一眼OpenAI春季发布会,这个发布会只有26分钟,你可以说它是一部科幻短片,也可以说它过于“夸夸其谈”!关于…

Anconda 快速常用命令简洁版

目的:简单清楚的使用基本的conda 命令 可能需求 查看项目中的虚拟环境及依赖是否满足需求操作新环境来满足项目或者论文的实现 Anconda 常用命令 conda 查看基础命令1. 进入Anaconda 环境2. 查看版本3.查看有哪些虚拟环境4.激活虚拟环境5. 进入虚拟环境查看6. 退出…

如何在网站嵌入可填写的PDF表单:2024巴黎奥运会赛程

如何将可填写的 PDF 表单嵌入您的网页?访问者无需下载或注册即可查看并填写。 简单!本文以2024巴黎奥运会赛程表单为例,演示如何将其嵌入网页中。您可以在 ONLYOFFICE 表单库免费获取该模板,有白色和紫色两种背景设计。 如何在网站…

六、抽象工厂模式

文章目录 1 基本介绍2 案例2.1 Drink 抽象类2.2 Tea 类2.3 Coffee 类2.4 DrinkFactory 接口2.5 TeaFactory 类2.6 CoffeeFactory 类2.7 Client 类2.8 Client 类运行结果2.9 总结 3 各角色之间的关系3.1 角色3.1.1 Product ( 抽象产品 )3.1.2 ConcreteProduct ( 具体产品 )3.1.3…

昇思25天学习打卡营第1天|快速入门-实现一个简单的深度学习模型

目录 实验环境 Jupyter云上开发环境使用 导包 处理数据集 网络构建 模型训练 评估模型性能 保存模型 加载模型 预测推理 实验环境 02-快速入门.ipynb (4) - JupyterLab (mindspore.cn) 规格:4u 16G 20G 镜像:py39-ms2.3.0rc1 特性&#xff1…

SpringBoot 最大连接数及最大并发数是多少

SpringBoot 最大连接数及最大并发数 Spring Boot 是一个基于 Spring 框架的快速开发框架,它本身并不直接管理数据库连接或网络连接的最大连接数和最大并发数。这些参数通常由底层的基础设施和组件来控制,例如: 数据库连接池:Spri…

Qt 使用视口和窗口作图

物理坐标系与逻辑坐标系 绘图设备的物理坐标系是基本的坐标系,通过 QPainter 的平移、旋转等坐标变换可以得到更容 易操作的逻辑坐标系。 物理坐标系也称为视口(viewport)坐标系,逻辑坐标系也称为窗口( window&…

netty使用redis发布订阅实现消息推送

netty使用redis发布订阅实现消息推送 场景 项目中需要给用户推送消息: 接口 RestController public class PushApi {Autowiredprivate PushService pushService;/*** 消息推送* param query* return*/PostMapping("/push/message")public String push(RequestBody…

Linux gcc/g++ _ make/makefile

文章目录 库gcc/g程序编译过程链接动态链接静态链接 make _ makefile 库 一、 什么是库? 库是程序代码的集合,是共享程序代码的一种方式。根据源代码的公开情况,库可以分为两种类型: 开源库,公开源代码,能…

Godot入门 03世界构建1.0版

在game场景,删除StaticBody2D节点,添加TileMap节点 添加TileSet图块集 添加TileSet源 拖动图片到图块,自动创建图块 使用橡皮擦擦除。取消橡皮擦后按住Shift创建大型图块。 进入选择模式,TileMap选择绘制,选中图块后在…

MSQP Mysql数据库权限提升工具,UDF自动检测+快速反向SHELL

项目地址:https://github.com/MartinxMax/MSQP MSQP 这是一个关于Mysql的权限提升工具 安装依赖 $ python3 -m pip install mysql-connector-python 使用方法 $ python3 msqp.py -h 权限提升:建立反向Shell 在建立反向连接前,该工具会自动检测是否具有提权条件&#xff0…

软考:软件设计师 — 7.软件工程

七. 软件工程 1. 软件工程概述 (1)软件生存周期 (2)软件过程 软件开发中所遵循的路线图称为 "软件过程"。 针对管理软件开发的整个过程,提出了两个模型:能力成熟度模型(CMM&#…

解析嵌入式世界里中断和异常的不同之处

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」,点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!是指CPU内部出现的中断&…

linux命令更新-文本处理awk

awk命令简介 awk是一种强大的文本处理工具,可以对文本文件进行格式化、统计、计算等操作。它逐行读取文本文件,并对每一行进行处理。awk的语法相对简单,但功能非常强大,是Linux系统中常用的文本处理工具之一。 awk命令基本语法 …

超燃!纯AI生成《泰坦尼克号》大片!浙大阿里发布MovieDreamer:超长电影生成“梦工厂“

论文链接:https://arxiv.org/pdf/2407.16655 项目主页:https://aim-uofa.github.io/MovieDreamer/ github链接:https://github.com/aim-uofa/MovieDreamer 亮点直击 MovieDreamer,一个新颖的分层框架,将自回归模型与扩…

idea设置类注释模板作者、日期、描述等信息

文章目录 前言一、新建类的时候自动添加类注释1.打开设置2.模版配置示例如下3.实际生成效果 前言 由于每次换电脑时都需要重新对idea进行设置,为了方便大家的开发配置,同时也为自己以后配置留一份记录(毕竟每次换环境都需要重新配置一遍&…

代码审计 | .NET SqlSugar框架注入漏洞

01阅读须知 此文所节选自小报童《.NET 代码审计》专栏,主要内容有涉及的.NET目录和文件操作、SQL注入方向的敏感函数、还有不安全的配置导致的漏洞挖掘思路,对.NET代码审计感兴趣的朋友们可以解锁该电子报刊,解锁更多的报刊内容。 02基本介…

【Unity】 HTFramework框架(五十三)使用 Addressables 可寻址系统

更新日期:2024年7月25日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 Addressables 可寻址系统使用 Addressables 可寻址系统一、导入 Addressables二、切换到 Addressables 加载模式三、切换资源加载助手四、加载资源五、注…

C++基础知识:函数重载是什么?函数重载基础用法,函数重载的作用,函数重载满足条件(关键),注意事项,函数重载代码语法的函数

1.作用: 函数名可以相同,提高复用性 2.函数重载满足条件(关键): 1.同一个作用域下 2.函数名称相同 3.函数参数类型不同 或者 个数不同 或者 顺序不同 注意:函数的返回值不可以作为函数重载的条件 1.常见…