【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出现冲突
此刻出现以下情况:
- 先使用 git pull:将远程仓库的file.txt的内容拉取到到开发者2的本地仓库中(发生本地合并冲突)
- 在开发者2的本地服务端:解决冲突
- 再次提交,再次推送
4.将内容合并进master分支
- master分支是没有这两行代码的。原因是master分支没有进行merge合并dev分支操作的。(所以是没有新增内容的)
在工作中推荐使用PR申请单,因为PR需要经过审查员的审核的。审查员都是老板,项目经理对,开发代码都是有保障性质的。才能确保master分支是一个稳定的状态。
- 两种解决方案
- 远程:PR☞申请单☞审查员审核(老板、项目经理)☞merge
- 本地:在本地服务器上merge操作☞再推送至远程仓库
- 本地:merge操作
- 注意合并的master都是最新一次提交记录的版本(最新的❗)所以需要需要pull拉取远程仓库最新版本的master分支内容。master:pull
- 好习惯:切换到dev分支上先merge合并master分支,存在冲突在dev分支上解决,再次提交。dev merge master
- 切换至master分支之后再次合并dev分支。master merge dev
- 最后再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,最后删除分⽀。
相关文章:

【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☞完成准备工作&…...

Vue使用FullCalendar实现日历/周历/月历
Vue使用FullCalendar实现日历/周历/月历 需求背景:项目上遇到新需求,要求实现工单以日/周/月历形式展示。而且要求不同工单根据状态显示不同颜色,一个工单内部,需要以不同颜色显示三个阶段。 效果图 日历 周历 月历 安装插件…...

社交圈子聊天交友系统搭建社交app开发:陌生交友发布动态圈子单聊打招呼群聊app介绍
系统概述 社交圈子部天交友系统是一个集成即时通讯、社区互动、用户管理等功能的在线社交平台。它支持用户创建个人资料,加入兴趣围子,通过文字、图片、语音、视频等多种方式进行交流,满足用户在不同场景下的社交需求 核心功能 -,…...

【微信小程序实战教程】之微信小程序原生开发详解
微信小程序原生开发详解 微信小程序的更新迭代非常频繁,几乎每个月都会有新版本发布,这就会让初学者感觉到学习的压力和难度。其实,我们小程序的每次版本迭代都是在现有小程序架构基础之上进行更新的,如果想要学好小程序开发技术&…...
PHP身份证实名认证接口集成守护电商购物
在这个万物互联的世界里,网购已成为日常生活中不可或缺的一部分。然而,随着线上交易的增加,如何保护消费者和商家免受欺诈,确保每一笔交易的安全,成了亟待解决的难题。这时,身份证实名认证接口应运而生&…...
为什么有了MAC还需要IP?
目录 MAC地址(Media Access Control Address)IP地址(Internet Protocol Address)为什么需要两者? IP地址和MAC地址在网络通信中扮演着不同的角色,它们各自有独特的功能和用途。下面是它们的主要区别和为什么…...
SpringBoot中如何使用RabbitMq
一,RabbitMQ简介和基本概念 RabbitMQ 是一个开源的消息中间件,基于 AMQP(高级消息队列协议)实现。 它由 Erlang 语言开发,并且支持多种编程语言,包括 Java、Python、Ruby、PHP 和 C# 等, 下载…...
LangChain自定义Embedding封装 之 ERNIE Bot
LangChain自定义Embedding封装 之 ERNIE Bot 百度飞浆平台的 ERNIE Bot 导入下面方法 和 环境 ,即可验证 embedding ERNIE_Bot_embedding() class ERNIE_Bot_embedding(BaseModel, Embeddings):client: Anyroot_validator()def validate_environment(cls, value…...

Git 安装教程
1、登录git 官方网站:https://git-scm.com/ 点击左边的 Downloads 或者 右边标识的下载标志,它根据电脑操作系统自动匹配版本 Downloads for Windows 2、以 windows 为例下载对应版本 网络有时可能不大好,阿里镜像下载超快。 下载好以后&a…...
Lua 类管理器
Lua 类管理器 -- ***** Class Manager 类管理*****‘local ClassManager {}local this ClassManagerfunction ClassManager.Class(className, ...)print(ClassManager::Class)--print(className)-- 构建类local cls {__className className}--print(cls)-- 父类集合local …...

实现领域驱动设计(DDD)系列详解:领域模型的持久化
领域驱动设计主要通过限界上下文应对复杂度,它是绑定业务架构、应用架构和数据架构的关键架构单元。设计由领域而非数据驱动,且为了保证定义了领域模型的应用架构和定义了数据模型的数据架构的变化方向相同,就应该在领域建模阶段率先定义领域…...

配置sublime的中的C++编译器(.sublime-build),实现C++20
GCC 4.8: 支持 C11 (部分) GCC 4.9: 支持 C11 和 C14 (部分) GCC 5: 完全支持 C14 GCC 6: 支持 C14 和 C17 (部分) GCC 7: 支持 C17 (大部分) GCC 8: 完全支持 C17,部分支持 C20 GCC 9: 支持更多的 C20 特性 GCC 10: 支持大部分 C20 特性 GCC 11: 更全面地支持 C20 …...
Android14 - 前台Service、图片选择器 、OpenJDK 17、其他适配
前台服务 1. 指定前台服务类型 以 Android 14(API 级别 34)或更高版本为目标平台的应用,需要为应用中的每项前台服务指定服务类型,因为系统需要特定类型的前台服务满足特定用例。具体介绍如下: 在Android 10 在 <service> 元素内引入了 android:foregroundServiceT…...

数据恢复教程:如何从硬盘、SD存储卡、数码相机中恢复误删除数据。
您正在摆弄 Android 设备。突然,您意外删除了一张或多张图片。不用担心,您总能找到一款价格实惠的数据恢复应用。这款先进的软件可帮助 Android 用户从硬盘、安全数字 (SD) 或存储卡以及数码相机中恢复已删除的数据。 Android 上数据被删除的主要原因 在…...

谷粒商城实战笔记-47-商品服务-API-三级分类-网关统一配置跨域
文章目录 一,跨域问题1,跨域问题产生的原因2,预检请求3,跨域解决方案3.1 CORS (Cross-Origin Resource Sharing)后端配置示例(Spring Boot) 3.2 JSONP (JSON with Padding)3.3 代理服务器Nginx代理配置示例…...

stm32平台为例的软件模拟时间,代替RTC调试
stm32平台为例的软件模拟时间,代替RTC调试 我们在开发项目的时候,如果用到RTC,如果真正等待RTC到达指定的时间,那调试时间就太长了。 比如每隔半个小时,存储一次数据,如果要观察10次存储的效果࿰…...
《设计模式之美》读书笔记2
从Linux学习应对大型复杂项目的方法: 1、封装与抽象:封装了不同类型设备的访问细节,抽象为统一的文件访问方式,更高层的代码就能基于统一的访问方式,来访问底层不同类型的设备。这样做的好处是,隔离底层设备…...
C++ STL set_difference 用法
一:功能 给定两个集合A,B;计算集合的差集,即计算出那些只包含在A中而不包含在B中的元素。 二:用法 #include <vector> #include <algorithm> #include <iostream>int main() {std::vector<int&…...

【基础算法总结】优先级队列
优先级队列 1.最后一块石头的重量2.数据流中的第 K 大元素4.前K个高频单词4.数据流的中位数 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1…...

python-绝对值排序(赛氪OJ)
[题目描述] 输入 n 个整数,按照绝对值从大到小排序后输出。保证所有整数的绝对值不同。输入格式: 输入数据有多组,每组占一行,每行的第一个数字为 n ,接着是 n 个整数, n0 表示输入数据的结束,不做处理。输…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...