Git笔记(21) 分布式工作流程
1. 分布式特性2. 集中式工作流3. 集成管理者工作流4. 司令官与副官工作流1. 分布式特性
同传统的集中式版本控制系统(CVCS)不同
Git 的分布式特性使得开发者间的协作变得更加灵活多样
在 Git 中,每个开发者同时扮演着节点和集线器的角色
也就是说,每个开发者既可以将自己的代码贡献到其他的仓库中
同时也能维护自己的公开仓库,让其他人可以在其基础上工作并贡献代码
由此,Git 的分布式协作可以为项目和团队衍生出种种不同的工作流程
2. 集中式工作流
集中式系统中通常使用的是单点协作模型——集中式工作流
一个中心仓库,可以接受代码,所有人将自己的工作与之同步
若干个开发者则作为节点,也就是中心仓库的消费者
这意味着如果两个开发者(Jove and Jasek)从中心仓库克隆代码下来
同时作了一些修改
Jove 先顺利地把数据推送回共享服务器
那么,Jasek 在推送修改前,必须先将Jove的工作抓取下来并且合并后方能推送
否则被告知修改正通过非快进式(non-fast-forward)的方式推送
这样才不会覆盖 Jove 的修改
只需要搭建好一个中心仓库
并给开发团队中的每个人推送数据的权限,就可以开展工作了
Git 不会让用户覆盖彼此的修改
当然这并不局限于小团队
利用 Git 的分支模型,通过同时在多个分支上工作的方式
即使是上百人的开发团队也可以很好地在单个项目上协作
3. 集成管理者工作流
Git 允许多个远程仓库存在,使得这样一种工作流成为可能:
每个开发者拥有自己仓库的写权限,和其他所有人仓库的读权限
这种情形下通常会有个代表“官方”项目的权威的仓库
要为这个项目做贡献,需要从该项目克隆出一个自己的公开仓库
然后将自己的修改推送上去
接着可以请求官方仓库的维护者拉取更新合并到主项目
维护者可以将仓库作为远程仓库添加进来
在本地测试变更,将其合并入他们的分支并
推送回官方仓库
这一流程的工作方式如下所示:
项目维护者推送到主仓库贡献者克隆此仓库,做出修改贡献者将数据推送到自己的公开仓库贡献者给维护者发送邮件,请求拉取自己的更新维护者在自己本地的仓库中,将贡献者的仓库加为远程仓库并合并修改维护者将合并后的修改推送到主仓库
这是GitHub等集线器式(hub-based)工具最常用的工作流程
人们可以容易地将某个项目派生成为自己的公开仓库
向这个仓库推送自己的修改,并为每个人所见
这么做最主要的优点之一是你可以持续地工作
而主仓库的维护者可以随时拉取你的修改
贡献者不必等待维护者处理完提交的更新
每一方都可以按照自己的节奏工作
4. 司令官与副官工作流
这其实是多仓库工作流程的变种
一般拥有数百位协作开发者的超大型项目才会用到这样的工作方式
例如著名的 Linux 内核项目
被称为副官(lieutenant)的各个集成管理者分别负责集成项目中的特定部分
所有这些副官头上还有一位称为司令官(dictator)的总集成管理者负责统筹
司令官维护的仓库作为参考仓库,为所有协作者提供他们需要拉取的项目代码
整个流程看起来是这样的:
普通开发者在自己的特性分支上工作,并根据 司令官的 master 分支进行变基 分支副官将普通开发者的特性分支合并到自己的 master 分支中司令官将所有副官的 master 分支并入自己的 master 分支中司令官将集成后的 master 分支推送到参考仓库中,以便所有其他开发者以此为基础进行变基
这种工作流程并不常用
只有当项目极为庞杂,或者需要多级别管理时,才会体现出优势
项目总负责人(即司令官)可以把大量分散的集成工作委托给不同的小组负责人分别处理
然后在不同时刻将大块的代码子集统筹起来,用于之后的整合
参考: git
以上内容,均根据git官网介绍删减、添加和修改组成
相关推荐:
Git笔记(20) 配置服务器
Git笔记(19) 生成SSH公钥
Git笔记(18) 搭建服务器Git
Git笔记(17) 协议
Git笔记(16) 变基
谢谢