Git笔记(21) 分布式工作流程


1. 分布式特性

同传统的集中式版本控制系统(CVCS)不同
Git 的分布式特性使得开发者间的协作变得更加灵活多样

在 Git 中,每个开发者同时扮演着节点和集线器的角色
也就是说,每个开发者既可以将自己的代码贡献到其他的仓库中
同时也能维护自己的公开仓库,让其他人可以在其基础上工作并贡献代码

由此,Git 的分布式协作可以为项目和团队衍生出种种不同的工作流程


2. 集中式工作流

集中式系统中通常使用的是单点协作模型——集中式工作流
一个中心仓库,可以接受代码,所有人将自己的工作与之同步
若干个开发者则作为节点,也就是中心仓库的消费者
在这里插入图片描述
这意味着如果两个开发者(Jove and Jasek)从中心仓库克隆代码下来
同时作了一些修改
Jove 先顺利地把数据推送回共享服务器
那么,Jasek 在推送修改前,必须 先将Jove的工作抓取下来并且合并后方能推送
否则被告知修改正通过非快进式(non-fast-forward)的方式推送
这样才不会覆盖 Jove 的修改

只需要搭建好一个中心仓库
并给开发团队中的每个人推送数据的权限,就可以开展工作了
Git 不会让用户覆盖彼此的修改

当然这并不局限于小团队
利用 Git 的分支模型,通过同时在多个分支上工作的方式
即使是上百人的开发团队也可以很好地在单个项目上协作


3. 集成管理者工作流

Git 允许多个远程仓库存在,使得这样一种工作流成为可能:
每个开发者拥有自己仓库的 写权限,和其他所有人仓库的 读权限

这种情形下通常会有个代表“官方”项目的权威的仓库
要为这个项目做贡献,需要从该项目克隆出一个自己的 公开仓库
然后将自己的修改推送上去
接着可以 请求官方仓库的维护者拉取更新合并到主项目

维护者可以将仓库作为远程仓库添加进来
在本地测试变更,将其合并入他们的分支并
推送回官方仓库

这一流程的工作方式如下所示:

在这里插入图片描述

  1. 项目维护者推送到主仓库
  2. 贡献者克隆此仓库,做出修改
  3. 贡献者将数据推送到自己的公开仓库
  4. 贡献者给维护者发送邮件,请求拉取自己的更新
  5. 维护者在自己本地的仓库中,将贡献者的仓库加为远程仓库并合并修改
  6. 维护者将合并后的修改推送到主仓库

这是 GitHub 等集线器式(hub-based)工具最常用的工作流程
人们可以容易地将某个项目派生成为自己的公开仓库
向这个仓库推送自己的修改,并为每个人所见
这么做最主要的优点之一是你可以持续地工作

而主仓库的维护者可以随时拉取你的修改
贡献者不必等待维护者处理完提交的更新
每一方都可以按照自己的节奏工作


4. 司令官与副官工作流

这其实是多仓库工作流程的变种
一般拥有数百位协作开发者的超大型项目才会用到这样的工作方式
例如著名的 Linux 内核项目

被称为副官(lieutenant)的各个集成管理者分别负责集成项目中的特定部分
所有这些副官头上还有一位称为司令官(dictator)的总集成管理者负责统筹

司令官维护的仓库作为参考仓库,为所有协作者提供他们需要拉取的项目代码
整个流程看起来是这样的:
在这里插入图片描述

  1. 普通开发者在自己的特性分支上工作,并根据 司令官的 master 分支进行变基 分支
  2. 副官将普通开发者的特性分支合并到自己的 master 分支中
  3. 司令官将所有副官的 master 分支并入自己的 master 分支中
  4. 司令官将集成后的 master 分支推送到参考仓库中,以便所有其他开发者以此为基础进行变基

这种工作流程并不常用
只有当项目极为庞杂,或者需要多级别管理时,才会体现出优势

项目总负责人(即司令官)可以把大量分散的集成工作委托给不同的小组负责人分别处理
然后在不同时刻将大块的代码子集统筹起来,用于之后的整合


参考: git
以上内容,均根据git官网介绍删减、添加和修改组成


相关推荐:

Git笔记(20) 配置服务器
Git笔记(19) 生成SSH公钥
Git笔记(18) 搭建服务器Git
Git笔记(17) 协议
Git笔记(16) 变基


谢谢

氢键H-H CSDN认证博客专家 机器人软件 运动控制 深度学习
一位永远相信美好的事情即将发生,从事自动化机器人软件开发,不忘初心,牢记使命,为实现中华民族伟大复兴而奋斗的社会主义接班人。
©️2020 CSDN 皮肤主题: 我行我“速” 设计师:Amelia_0503 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值