(二)Git在公司中团队内合作和跨团队合作和分支操作的全部流程(一篇就够)

news/2024/2/28 17:58:26

(一)Git连接GitHub的全部流程https://blog.csdn.net/m0_65992672/article/details/132333727

团队内协作

项目经理通过git push将代码推送到远程仓库【也就是git、gitee等代码托管中心】,推完以后组员可以通过git clone克隆下来代码,如果组员修改了代码想要推到远程仓库的话,需要项目经理将组员添加到当前项目团队中,组员可以得到登录代码托管中心的密码和账号,此后就可以git push将代码推到远程仓库,当项目经理觉得你代码没有问题后就会将组员的代码git pull到自己的本地,然后推送到远程仓库【注意:组员修改代码都是在自己的分支上】

邀请合作伙伴加入团队

1)选择邀请合作者

2)填入想要合作的人

3 ) 复 制 地 址 并 通 过 微 信 钉 钉 等 方 式 发 送 给 该 用 户 , 复 制 内 容 如 下 :

https://github.com/atguiguyueyue/git-shTest/invitations

)在 atguigulinghuchong 这个账号中的地址栏复制收到邀请的链接,点击接受邀请。

)成功之后可以在 atguigulinghuchong 这个账号上看到 git-Test 的远程仓库。

然后就可以进行克隆进行修改,然后push到仓库中

克隆操作

远程库地址复制:

克隆操作:

idea中克隆

【注意:组员修改代码都是在自己的分支上】

分支操作

创建一个分支

master -> New Branch

在这里插入图片描述

填写分支名称,Create

在这里插入图片描述

创建分支成功后,会自动切换到创建的分支

在这里插入图片描述

可以看出GitHub上git仓库多了一个分支

在这里插入图片描述

通常情况下,一个项目可能有多个分支,由多个开发人员开发,每个开发者会创建自己的分支,然后将代码合入到主分支

下面我们就来看看,如何将代码合入主分支

第一步 拉取主分支最新代码

因为我们要合入代码到主分支master,所以先拉取master分支的最新代码,防止合入时产生冲突

在这里插入图片描述

选择master分支

在这里插入图片描述

拉完代码可能会有冲突,我们处理完冲突后,切换到master分支

在这里插入图片描述

Git合并分支逻辑

主分支中将分支的代码合入时不需要处理冲突了,因为之前在分支上拉取了主分支代码处理过冲突了,但是在多开发者的共同开发的情况下,这不是一定的,因为在我们将多位开发者的多份代码合入主分支时,如果此时有人提交了的代码和你提交的代码有交集,就有可能导致冲突发生,但这种情况下,概率比较低,一般来说,每个开发者负责的开发任务一般没有交集,即使别人提的代码,很少会影响到你提交的代码,但是如果有冲突,解决一下也可以

一般企业开发中会规定一个统一的合入代码时间,这样,合入代码时就可以专心解决合入中少量的冲突问题(有时甚至没有冲突),而不用关心,合入中途还有新代码的合入(一般也会限制开发者不能直接提代码到主分支,由某人统一合入开发者们申请合入的代码),也就是说合入代码前只拉取一次最新的主分支代码,然后合入各分支代码

下面为合并分支代码的具体步骤

master -> zj -> Merge ‘zj’ into ‘master’

在主分支中将zj分支合并到master主分支中

在这里插入图片描述

在主分支合入完分支代码后,还需要将本地仓代码推送给GitHub,这样以后别人拉取主分支代码时,就是最新的代码了

注:在提交代码时,都要考虑下是否需要先拉取下最新代码,以防产生冲突

将分支推送到远程仓库

 

冲突合并

首先yka分支新增一条数据提交了

现在切换到master

master在同一位置新增一条数据并提交

现在在主分支中把yka分支合并到master分支中

就会出现合并合并冲突

特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix

 

 

切换到yka分支中合并主分支

两个分支就一致了

将分支推送到远程仓库

 

跨团队协作

A团队先发送和团队一个远程仓库地址,B团队搜索这个地址进行fork操作到自己的仓库中【两个团队的代码通过fork互通】,B团队将A团队远程库的代码克隆下来到本地仓库,修改完成以后通过git push将修改后的代码推到自己B团队的远程库中,然后B团队发送一个Pull request请求给A团队【提示A团队拉取代码,但A团队需要审核这个代码】审核通过之后,A团队通过merge将B团队修改的代码合并到A团队的远程库,然后A团队就可以将新代码pull到自己的本地库中

不需要邀请别人加入自己的团队

将远程仓库的地址复制发给邀请跨团队协作的人,比如东方不败,张三李四

以下操作流程:张三把项目仓库地址发送给李四,李四先搜索地址在进行fork操作把张三的项目拿到自己的仓库中,李四在进行修改项目,修改完成后push到自己的仓库中,李四在进行pull request操作,争夺张三同意,同意之后李四改的数据才会提交到张三仓库中

【1】张三把远程库的地址发给李四:

项目的地址:

https://github.com/zhaoshanshan3366/GitResp2.git

【2】李四进行fork操作:

李四进入到账号后:复制地址:https://github.com/zhaoshanshan3366/GitResp2.git

然后点击下面的fork操作:

这样就等同于创建了一个自己的远程仓库。但是这个远程仓库等同于是一个分支远程仓库,你可以随便操作,并不会影响源仓库,但是如果你的修改,更新想要融合到源仓库中,就需要提交申请了。


fork完之后就把张三的项目复制到李四的仓库中了


【3】然后李四就可以克隆到本地,并且进行修改,修改完成后push到自己仓库中:

克隆操作

远程库地址复制:

克隆操作:

idea中克隆

也可以进行上面团队内合作的分支操作

分支操作

【4】李四修改完内容进行pull request操作,给张三发送请求,争夺张三同意,同意之后李四改的数据才会提交到张三仓库中:


 


 

【5】张三进行审核操作,同意之后李四改的数据才会提交到张三仓库中:

可以互相留言:

查看具体提交的内容:

确定通过以后,可以进行合并,李四修改的内容就与张三合并了


http://www.ppmy.cn/news/1039485.html

相关文章

720全景虚拟三维数字展馆丰富了营销体验

传统的展览形式往往受到场地和空间的限制&#xff0c;展品数量和种类有限。而3D数字展厅突破了时空的束缚&#xff0c;企业可以将更多的产品、服务和文化元素以数字化形式展示&#xff0c;无需考虑展览面积和运输成本&#xff0c;大大提升了展览的灵活性和内容丰富度。数字化虚…

k8s简介及虚拟机快速搭建k8s集群

文章目录 1、k8s简介1.1、部署方式的变迁1.2、定义1.3、Kubernetes提供的功能 2、虚拟机快速搭建k8s集群2.1、虚拟机配置&#xff08;centos7 2G内存2个处理器&#xff09;2.2、基础环境准备2.3、docker安装&#xff08;易踩坑&#xff09;2.4、安装k8s组件2.5、master节点部署…

php报错Inf and NaN cannot be JSON encoded怎么处理

在 PHP 中&#xff0c;如果尝试将 Inf&#xff08;正无穷大&#xff09; 和 NaN&#xff08;不是数字&#xff09;这样的特殊值直接用json_encode转换为 JSON 格式&#xff0c;就会出现报错 "Inf and NaN cannot be JSON encoded"。要处理这个问题&#xff0c;可以采…

谷歌在Chrome浏览器中推进抗量子加密技术

近日&#xff0c;Chromium博客上发表的一篇博文称&#xff0c;为了加强网络安全&#xff0c;应对迫在眉睫的量子计算机威胁&#xff0c;谷歌各个团队密切合作&#xff0c;为网络向抗量子密码学的过渡做好准备。 谷歌的Chrome团队在博客中写道&#xff0c;该项目涉及修订技术标准…

GraphQL strawberry的使用回顾和体会

GraphQL vs RESTful 简单来说GraphQL 比起 RESTful 集成额外一些功能 出入参校验、序列化 (简化后端编程)自由可选的返回数据字段 (简化一些多余接口开发和沟通联调成本) 这些都是优点了。 开发效率在项目初期是很重要的&#xff0c;需要快速原型化。 但是后期稳定后&#…

2023-08-17力扣每日一题

链接&#xff1a; 1444. 切披萨的方案数 题意&#xff1a; 给定一个矩阵&#xff0c;其中含有多个苹果&#xff0c;需要切割k-1次,每次可以切割多行/多列&#xff0c;需要保证切割两个部分都有苹果&#xff0c;移除靠上/靠右的部分&#xff0c;对留下部分进行后续的切割&…

Linux 多进程

目录 0x01 linux中特殊的进程 0x02 进程的标识 0x03 创建子进程 0x01 linux中特殊的进程 0号进程&#xff1a;idle进程&#xff0c;系统启动加载的进程1号进程&#xff1a;systemd进程&#xff0c;系统初始化&#xff0c;是所有进程的祖先进程 init2号进程&#xff1a;kthre…

pytest自动化测试框架tep环境变量、fixtures、用例三者之间的关系

tep是一款测试工具&#xff0c;在pytest测试框架基础上集成了第三方包&#xff0c;提供项目脚手架&#xff0c;帮助以写Python代码方式&#xff0c;快速实现自动化项目落地。 在tep项目中&#xff0c;自动化测试用例都是放到tests目录下的&#xff0c;每个.py文件相互独立&…

Kotlin手写RxJava变换符

Kotlin手写RxJava变换符 本文链接&#xff0c;点击这里进入 1、核心点&#xff1a;中转站存储之前的数据 2、三行代码实现RxJava 使用create、map、observer fun main() {// create构造出RxJavaCore存放&#xff0c;lambda执行完的结果create{"WCH"}.map{ // 扩展…

Tenzing and Balls

题面翻译 有一个大小为 n n n 的数组 a a a。你可以进行下列操作任意多次&#xff1a; 选择 i i i 和 j j j&#xff0c;使 1 ≤ i < j ≤ ∣ a ∣ 1\leq i \lt j \leq |a| 1≤i<j≤∣a∣ 并且 a i a j a_ia_j ai​aj​&#xff0c; 从数组中删除 a i , a i 1 ,…

合宙Air724UG LuatOS-Air script lib API--wifiRil

wifiRil Table of Contents wifiRil wifiRil.regRsp(head, fnc, typ, formt) wifiRil.regUrc(prefix, handler) wifiRil.deRegUrc(prefix) wifiRil.request(cmd, arg, onrsp, delay, param) wifiRil 模块功能&#xff1a;esp8266 wifi模块AT命令交互管理 wifiRil.regRsp(head,…

龙迅LT9711 2PORT MIPI或者LVDS转TYPE-C

LT9711 1.描述&#xff1a; Lontium LT9711是双端口MIPI/LVDS到DP1.2转换器&#xff0c;内部有c型替代模式开关和PD控制器。MIPI DSI/CSI输入具有可配置的单端口或双端口&#xff0c;具有1个时钟通道&#xff0c;1个~4个数据通道&#xff0c;最大运行2Gbps/通道&#xff0c;可…

【Java开发实战攻关】「JPA技术专题」带你一同认识和使用JPA框架进行开发你的应用服务

带你一同认识和使用JPA框架进行开发你的应用服务 什么是JPA框架JPA持久层框架使用JPA实现持久化JPA注解介绍按类别划分的 JPA注解实体注解Entity模型注解Table示例-显示了如何使用此批注指定主表名。 注解TableGeneratorTableGenerator主要属性strategystrategy属性可以是下列枚…

【Linux】一切皆文件

Linux 下一切皆为文件&#xff0c; 文件包括头文件&#xff0c;库文件&#xff08;静态库和共享库&#xff09;&#xff0c;可执行文件&#xff0c;目录文件&#xff0c;软链接文件&#xff0c;配置文件等。 每个文件都依据权限分为用户、用户组和其他人三个身份&#xff0c;…

2023年4大收银系统软件排名(真实测评)

现在满大街的各种服装店、便利店、百货店、母婴店...... 每天都要处理大量的订单。 使用传统的人工开单记账&#xff0c;效率低下、客户体验差、而且容易出错&#xff0c;需要耗费很多时间来回对账&#xff1b; 聪明的零售店老板都已经开始使用收银系统软件&#xff0c;通过手…

二刷LeetCode--48. 旋转图像(C++版本),数学题

思路&#xff1a;主要是观察变化之后的数组和最开始的数组的区别&#xff0c;不难发现&#xff0c;先转置在左右镜像对称即可。需要注意的是转置和镜像对称中for变量的终止条件。 class Solution { public:void rotate(vector<vector<int>>& matrix) {// 行数…

步入React正殿 - React组件设计模式

目录 扩展学习资料 高阶组件 /src/components/hoc/withTooltip.js /src/components/hoc/itemA.jsx /src/components/hoc/itemB.jsx /src/App.js 函数作为子组件【Render pprops】 函数作为子组件 /src/components/rp/itemC.jsx【父组件】 /src/components/rp/withToo…

责任链模式简单实现

两种实现方式 第一种 public interface IBaseTask {public void doAction(String isTask,IBaseTask iBaseTask); }public class ChainManager implements IBaseTask{//工作类的集合private List<IBaseTask> iBaseTaskList new ArrayList<>();public void addTas…

【分享】使用FileChannel进行文件拷贝

前言: 项目实际编写中&#xff0c;使用到了多种文件拷贝方式&#xff0c;有包括专门使用c写了拷贝工具&#xff0c;供给Java调用&#xff0c;也有使用标准的输入输出流&#xff0c;这里分享的是借助 FileChannel 来读写,nio中传送数据使用channelbuffer&#xff0c;大的数据可以…

【RocketMQ】安装

文章目录 下载RocketMQ配置环境变量 下载RocketMQ 下载RocketMQ安装包 下载DashBoard 这里版本推荐选择4.9.x&#xff0c;因为比较稳定。 下载完毕之后&#xff0c;将安装包拖入到Linux环境。 之后使用unzip命令解压缩RocketMQ的安装包。 unzip ./rocketmq-all-4.9.2-bin-rel…
最新文章