GIt的原理和使用(五)

目录

多人协作

多人协作一

准备工作 

 协作开发

多人协作二

准备工作

额外场景

申请单合并分支

更推荐写法 

远程分支删除后,本地git branch -a依然能看到的解决办法


多人协作

多人协作一

  • 目标:在远程master分支下的file.txt文件新增代码“aaa”和“bbb”
  • 实现:由开发者1新增“aaa”,由开发者2新增“bbb”
  • 条件:在一个分支下协作完成

准备工作 

1、在远程仓库中创建一个dev分支(远程分支,很推荐)

2、令linux中的开发者1获取新建的dev分支

  • git branch -r:只显示哪些远程分支已经被拉取到了本地
  • git branch -a:列出所有的分支,包括本地分支和远程分支,如果一个远程分支被拉取到了本地,它将以类似 remotes/origin/branch_name 的形式显示在列表中

3、在windows环境下clone一个和linux中开发者1一样的仓库,模拟开发者2:

        ①D盘新建一个空的git文件夹,进入文件夹,在空白处按住shift+鼠标右键,选择在此处打开PowerShell窗口:

② 将远程仓库克隆给一份给它

 协作开发

1、开发者1在其本地创建一个dev分支,在将该分支切换为工作分支后与远程dev分支建立连接

  • git checkout -b 本地分支名 远程分支名
  • git branch -vv:显示本地分支列表以及每个分支的跟踪信息

2、修改file.txt文件,向其中新增aaa并提交给本地仓库的dev分支

3、将开发者1的本地dev分支提交给远程dev分支 

出现以下界面可以用git config --global push.default matching指令解决:

提交成功: 

4、开发者2在其本地创建一个dev分支,在将该分支切换为工作分支后与远程dev分支建立连接

5、在记事本上修改file.txt文件,新增bbb

6、尝试将开发者2的本地dev分支提交给远程dev分支 

  • 原因:冲突问题,二者都将file.txt文件新增内容提交给远程仓库,远程仓库不知道要用谁的

7、人工解决冲突问题并再次提交(对远程dev分支与当前dev分支合并后出现的冲突进行修改)

8、向远程dev分支推送成功(此时远程master分支中的file.txt文件仍未被修改)

9、合并远程的dev分支和master分支 

远程操作: 

本地操作: 

①将本地dev更新至最新(如果不更本地dev的file.txt没有新增bbb)

②切换至本地master并令本地master为最新状态

如果不更新的话,如果远程master中有ccc但是此时本地master没ccc,在本地master合并了本地dev后进行提交时,该master也没有ccc 

③切换至本地dev,并合并本地master(由于什么都没干所以中间有些内容是没啥东西的)

  • 原因:这样有了冲突也可以在dev上进行修改,直接在master上修改有风险

④切换至本地master,并合并本地dev,最后将合并后的master提交给远程master

⑤查看远程仓库的master分支中的file.txt文件(已被修改)

⑥删除远程dev分支

多人协作二

  • 目标:远程master分支下新增function1和function2文件
  • 实现:由开发者1新增function1,由开发者2新增function2
  • 条件:在不同分支下协作完成

准备工作

①开发者1创建一个feature-1分支,并切换至该分支,同时在该分支下创建并编写function1文件

②将本地feature-1分支推送至远程仓库

本地与远程仓库建立连接的三种方式:(②时的远程仓库中没有设置分支所以后两种方法不能用)

  • git push origin 本地分支名:强制推送本地分支至远程仓库
  • git checkout -b 本地分支名 远程分支名:切换至本地分支时就将该分支与远程分支建立连接
  • git branch -u origin/远程分支名 本地分支名:单纯的将本地分支和远程分支建立连接

③保证开发者2的master分支是最新的版本

④开发者2创建一个feature-2分支,并切换至该分支,同时在该分支下创建并编写function2文件

  • 新建function2文件时直接在对应文件夹下创建function2文本文件即可 

至此已完成初始目标 

额外场景

问题:开发者2生病,开发者1要接替开发者2的工作

①开发者1从远程仓库中获取开发者2的工作内容

对应git pull:

  • 拉取分支中的内容时需要将两个分支建立连接后才能拉取
  • 可以直接拉取仓库内容

②开发者1创建feature-2分支,并切换至该分支,同时将该分支与远程仓库中的feature-2分支连接

③开发者1帮助开发者2继续开发他的function2文件,同时提交至本地feature-2分支 

④将本地feature-2分支更新的内容推送到远程feature-2分支中 

新问题:此时开发者2病好了申请继续开发

①开发者2获取远程仓库中开发者1写了一部分的feature-2分支的内容(不拉就还是一行coding)

② 开发者2完成对function2文件的开发

申请单合并分支

管理者进行审批: 

 

更推荐写法 

        虽然申请单的方式看起来很方便,但是为了防止冲突问题,我们更推荐在副分支上将该副分支与主分支合并后(有冲突问题就解决)再将该分支与主分支合并的方式:

①将开发者1的master分支更新至最新:

② 合并本地的feature-1分支和master分支,如果两个分支没有冲突就会显示以下界面

③查看本地feature-1分支是否与远程的feature-1分支连接

④强制将开发者1的本地feature-1分支推送给远程仓库(新修改的内容覆盖远程的)

⑤提交申请表单申请将远程feature-1分支与远程master分支合并

 ⑥删除远程的feature-1和-2分支 

远程分支删除后,本地git branch -a依然能看到的解决办法

在删除远程仓库的feature-1和feature-2分支后,远程仓库中只有master分支了:

但是此时我们在开发者中使用git branc -a依然能看到原来的feature-1和feature-2分支:

展示远程分支情况指令:git remote show origin

清理无用远程分支:git remote prune 指令名 远程仓库分支名(git branch -a时不会显示)

最后用git branch -d 分支名删除本地的无用分支即可

~over~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Adobe推出20多个,企业版生成式AI定制、微调服务

3月27日,全球多媒体领导者Adobe在拉斯维加斯召开“Summit 2024”大会,重磅推出了Firefly Services。 Firefly Services提供了20 多个生成式AI和创意API服务,支持企业自有数据对模型进行定制、微调,同时可以与PS、Illustrator、Ex…

压测k8s服务资源不足怎么处理

副本 在Kubernetes(简称K8s)中,Pod是最小的调度单元,而Pod的副本则是指同一个Pod的多个实例。在实际应用中,经常需要创建多个Pod的副本来增加应用的容错性和可伸缩性。 k8s的pod副本的负载均衡 Kubernetes中的Pod副本…

区块链食品溯源案例实现(二)

引言 随着前端界面的完成,我们接下来需要编写后端代码来与区块链网络进行交互。后端将负责处理前端发送的请求,调用智能合约的方法获取食品溯源信息,并将结果返回给前端。 通过前后端的整合,我们可以构建一个食品溯源系统&#xf…

Tensorflow CUPTI could not be loaded 解决

使用conda在指定环境安装cudatoolkit和cudnn后出现 CUPTI could not be loaded问题 conda install cudatoolkit11.0.3 conda install cudnn8.0.5.39 将本机C:\Program Files\NVIDIA Corporation\Nsight Systems xxxx\target-windows-x64 包含cupti的文件均复制到 D:\xxx\cond…

mysql高阶之(视图)

目录 视图概念 视图概念 视图是基于一个或多个表的SQL查询结果的虚拟表。视图并不实际存储数据,而是保存了查询的定义。当你查询视图时,数据库引擎会按照视图的定义执行底层的SQL查询。 (一)视图作用 视图的主要作用时一张表或多…

如何用Flask中的Blueprints构建大型Web应用

本文分享自华为云社区《构建大型Web应用Flask中的Blueprints指南》,作者: 柠檬味拥抱。 什么是Blueprints? 什么是Blueprints? Blueprints是Flask中的一种模式,用于将应用程序分解为可重用的模块。每个蓝图实际上是…

AES加密解密算法

一,AES算法概述 AES属于分组加密,算法明文长度固定为128位(单位是比特bit,1bit就是1位,128位等于16字节) 而密钥长度可以是128、192、256位 当密钥为128位时,需要循环10轮完成加密&#xff0…

鸿蒙雄起!风口就在当下,你如何抉择?

近年来,华为自主研发的鸿蒙操作系统(HarmonyOS)引起了广泛的关注和讨论。鸿蒙系统不仅标志着华为在软件领域的一次重大突破,也预示着全球智能设备市场格局的潜在变化。本文将深入探讨鸿蒙系统的兴起、其在市场上的表现以及对程序员…

html页面使用@for(){},@if(){},利用jquery 获取当前class在列表中的下标

基于以前的项目进行修改优化,前端代码根据List元素在html里进行遍历显示 原先的代码: 其中,noticeGuide.Id是标识noticeGuide的唯一值,但是不是从0开始的【是数据库自增字段】 但是在页面初始化加载的时候,我们只想…

搜维尔科技:【应急演练】【工业仿真】救援模拟演练可视化仿真项目实施

安全救援综合演练系统是一套面向公共安全事故、预案管理、应急救援模拟演练的虚拟仿真解决方案,它为警察、消防以及专门的应急救援保障部门提供一个综合的应急救援培训和仿真演练平台。平台主要通过设计不同的事故模型和特定的灾难场景,定制不同的应急救…

鸿蒙OS开发实例:【工具类封装-emitter组件间通信】

import Emitter from ohos.events.emitter; import pasteboard from ohos.pasteboard; MyEmitterUtil 是一个针对 HarmonyOS 的事件驱动编程封装类,主要用于组件间的通信和数据传递。 使用要求: DevEco Studio 3.1.1 Release 或更高版本API 版本&…

苍穹外卖02(新增员工,重复内容异常处理器,绑定当前用户ThreadLocal,日期格式问题,分页查询,启用禁用,编辑员工)

目录 一、员工管理-新增员工 1.需求分析和设计 2.代码开发 3 功能测试 接口文档测试 前后端联调测试 4 代码完善一:增加异常处理器 5 代码完善二:绑定当前用户名 (1) 准备ThreadLocal工具类 (2) 修改拦截器代码 (3) Service里获取当前用户 小…

servlet开发详解

一、什么是servlet,干什么用的??? tomcat作为一个web服务器,也称作servlet容器。servlet只有放在web服务器中才能运行,不能独立运行。tomcat这个容器要做三件事:接收请求、处理请求和响应请求。…

图形界面开发-framebuffer技术

https://www.linuxidc.com/Linux/2012-05/61024.htm 1、framebuffer 帧缓冲 帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接…

SPU赋能PSI:探秘隐私集合求交核心技术与高级调度架构实践

1.SPU实现的PSI介绍 1.PSI的定义和种类 隐私集合求交(Private Set Intersection, PSI)是一种在密码学和安全多方计算(MPC)领域中的关键技术,允许两个或多个参与者在不泄露各自输入集合中非交集部分的前提下&#xff…

基于单片机防丢失设备的设计和实践

摘要:防止老人或者小孩走丢走失,还可以放在汽车里,利用GPS系统,设计实现了基于单片机的防丢失设备。设备利用液晶显示屏显示信息,并实时发送位置短信到手机传输当前位置的纬度和经度坐标,实现了定位与监测功能。测试结果表明,利用该设备和手机可以同时观察老人或小孩携带…

Manacher算法学习笔记(洛谷题单 Part 5.3 Manacher)

0.随便说说 字符串学的太差了,每次字符串算法都是学完了就忘,正好上场 c f d i v 1 B cfdiv1B cfdiv1B考了一个 M a n a c h e r Manacher Manacher,就先复习它了。 1.一些概念 子串 ( s u b s t r i n g ) (substring) (substring)&#…

【Java程序设计】【C00381】基于(JavaWeb)Springboot的爱心商城管理系统(有论文)

【C00381】基于(JavaWeb)Springboot的爱心商城管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发&#x…

外包干了4年,技术退步明显。。。。

说一下自己的情况,本科生,19年通过校招进入上海某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

Python环境下一种新的类谱峭度算法的旋转机械故障诊断模型

谱峭度SK的本质是计算每根谱线峭度值的高阶统计量,谱峭度对信号中的瞬态冲击成分十分敏感,能有效的从含有背景噪声信号中识别瞬态冲击及其在频带中的分布。由于谱峭度的复杂性、缺少一个正式的定义和一个容易理解的计算过程使其在很长时间内都未能引入到…