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

【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,最后删除分⽀。 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • springboot配置文件如何读取pom.xml的值
  • 新电脑如何设置 npm 源及查看源、安装 cnpm、pnpm 和 yarn 的详细教程
  • Python研究生毕业设计,数据挖掘、情感分析、机器学习
  • scikit-learn中fit_transform会改变原始数据吗
  • 江科大/江协科技 STM32学习笔记P9-11
  • Si24R03:高度集成的低功耗SOC芯片中文资料
  • 05 ES6中的Set类型
  • openssl req 详解
  • c++——map和set
  • 解决vscode+UE5中vscode无法识别头文件,无法函数无法跳转,也无法自动补全的问题。
  • 科研绘图系列:R语言和弦图 (Chord diagram)
  • 自动驾驶(八十六)---------通信中间件Fdbus
  • C#测试控制台程序调用Quartz.NET的基本用法
  • OpenCV 卷积 Robert算子,Laplance算子,Sobel算子,Canny边缘检测原理
  • 【DVWA靶场】Web安全之(布尔值/延时型)SQL盲注(超详细教程)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • EOS是什么
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java编程基础24——递归练习
  • Js基础知识(四) - js运行原理与机制
  • JS题目及答案整理
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Promise面试题2实现异步串行执行
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SOFAMosn配置模型
  • springMvc学习笔记(2)
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Webpack 4x 之路 ( 四 )
  • Web设计流程优化:网页效果图设计新思路
  • 程序员该如何有效的找工作?
  • 初识MongoDB分片
  • 第十八天-企业应用架构模式-基本模式
  • 给第三方使用接口的 URL 签名实现
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 后端_MYSQL
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 问题之ssh中Host key verification failed的解决
  • 说说我为什么看好Spring Cloud Alibaba
  • ​io --- 处理流的核心工具​
  • #if和#ifdef区别
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (175)FPGA门控时钟技术
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (九)c52学习之旅-定时器
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)Unity3DUnity3D在android下调试
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET IoC 容器(三)Autofac
  • .net 设置默认首页