Git笔记(21) 分布式工作流程
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) 变基
谢谢
Git笔记(21) 分布式工作流程相关推荐
- Git 学习笔记:5 分布式工作流程
Git 学习笔记:5 分布式工作流程 分布式工作流程 集中式工作流 集成管理员工作流 司令官与副官工作流 工作流程总结 向一个项目贡献 提交准则 私有小型团队 John's Machine 私有管理团 ...
- Git之深入解析如何使用Git的分布式工作流程与如何管理多人开发贡献的项目
一.分布式工作流程 如果现在拥有一个远程 Git 版本库,就能为所有开发者共享代码提供服务:在一个本地工作流程下,如果你也已经熟悉了基本 Git 命令,现在就可以学习如何利用 Git 提供的一些分布式 ...
- Hello Git(五)——Git分布式工作流程
一.Git分布式工作流程简介 与集中式版本控制系统(CVCS)不同,Git的分布式特性使得开发者间的协作变得更加灵活多样.在集中式系统中,每个开发者就像是连接在集线器上的节点,彼此的工作方式大体相同. ...
- Git多人协作工作流程
前言 之前一直把Git当做个人版本控制的工具使用,现在由于工作需要,需要多人协作维护文档,所以去简单了解了下Git多人协作的工作流程,发现还真的很多讲解的,而且大神也已经讲解得很清楚了,这里就做一个简 ...
- Git之深入解析工作流程、常用命令与Reset模式分析
一.Git 工作流程 ① 工作区域 四个区: Workspace:工作区 Index / Stage:暂存区(和 git stash 命令暂存的地方不一样) Repository:仓库区(或本地仓库) ...
- 微服务升级_SpringCloud Alibaba工作笔记0006---spring gateway工作流程
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 gateway的内容 gateway由三个部分组成, route路由:用来接收一个uri的 pre ...
- Git笔记(25) 选择修订版本
Git笔记(25) 选择修订版本 1. 单个修订版本 1.1. 简短的 SHA-1 1.2. 分支引用 1.3. 引用日志 1.4. 祖先引用 2. 提交区间 2.1. 双点 2.2. 多点 2.3. ...
- Git笔记(23) 不同角色的贡献
Git笔记(23) 不同角色的贡献 1. 私有小型团队 2. 私有管理团队 3. 派生的公开项目 4. 通过邮件的公开项目 1. 私有小型团队 可能会遇到的最简单的配置是有一两个开发者的私有(闭源)项 ...
- Git笔记(22) 项目贡献要点
Git笔记(22) 项目贡献要点 1. 项目影响因素 1.1. 活跃贡献者的数量 1.2. 使用的工作流程 1.3. 提交权限 2. 提交准则 2.1. 检查空白错误 2.2. 独立变更 2.3. 提 ...
最新文章
- 美团点评基于MGR的CMDB高可用架构搭建之路
- JAVA 计算String类型的时间差(秒)
- 批处理 操作mysql_用批处理对MySQL进行数据操作
- 菜鸟php ajax,AJAX ASP/PHP
- 多核CPU上python多线程并行的一个假象(转)
- Android软键盘弹出引起的各种不适终极解决方案
- reply-code=404, reply-text=NOT_FOUND - no exchange
- 使用console进行 性能测试 和 计算代码运行时间
- php tp框架验证,tp5.1验证 - thinkphp5.1框架学习 - php中文网博客
- 使用STM32进行Flash地址空间的数据读取
- 教你利用阿里云服务器搭建一个随时随地的Web IDE
- 华为防火墙区域和地址规划:
- Android之经典Launcher主菜单模块学习
- 婚宴座位图html5,婚宴酒席座位安排图 20桌婚宴座位安排图
- SOPHP免费稳定的微信公众号开源框架
- 用53款全免费软件重装Windows(xbeta译)
- husky实现git commit规范
- 关于用python爬虫白嫖漫画这档子事
- Codevs 1814 最长链
- 计算机系统硬件认识步骤,任务1计算机硬件设备的认识.pptx
热门文章
- Code Forces 448C Painting Fence 贪婪的递归
- [Android1.6]横竖屏切换时自动弹出键盘的问题
- (转)Spring Boot 日志配置(超详细)
- js中的date操作
- 操作系统(13)-操作系统中的死锁及其预防、避免、检测与解除
- 算法高级(34)-搜索引擎速度快的秘诀-倒排索引介绍
- PowerDesigner(五)-概念数据模型(CDM生成LDM,PDM和OOM)
- 树莓派C语言点灯,树莓派3 b GPIO 点亮小灯泡
- 5.4shell编程3
- 算法(第4版) Chapter 5.2 单词查找树