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

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

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

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

  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) 变基


谢谢

Git笔记(21) 分布式工作流程相关推荐

  1. Git 学习笔记:5 分布式工作流程

    Git 学习笔记:5 分布式工作流程 分布式工作流程 集中式工作流 集成管理员工作流 司令官与副官工作流 工作流程总结 向一个项目贡献 提交准则 私有小型团队 John's Machine 私有管理团 ...

  2. Git之深入解析如何使用Git的分布式工作流程与如何管理多人开发贡献的项目

    一.分布式工作流程 如果现在拥有一个远程 Git 版本库,就能为所有开发者共享代码提供服务:在一个本地工作流程下,如果你也已经熟悉了基本 Git 命令,现在就可以学习如何利用 Git 提供的一些分布式 ...

  3. Hello Git(五)——Git分布式工作流程

    一.Git分布式工作流程简介 与集中式版本控制系统(CVCS)不同,Git的分布式特性使得开发者间的协作变得更加灵活多样.在集中式系统中,每个开发者就像是连接在集线器上的节点,彼此的工作方式大体相同. ...

  4. Git多人协作工作流程

    前言 之前一直把Git当做个人版本控制的工具使用,现在由于工作需要,需要多人协作维护文档,所以去简单了解了下Git多人协作的工作流程,发现还真的很多讲解的,而且大神也已经讲解得很清楚了,这里就做一个简 ...

  5. Git之深入解析工作流程、常用命令与Reset模式分析

    一.Git 工作流程 ① 工作区域 四个区: Workspace:工作区 Index / Stage:暂存区(和 git stash 命令暂存的地方不一样) Repository:仓库区(或本地仓库) ...

  6. 微服务升级_SpringCloud Alibaba工作笔记0006---spring gateway工作流程

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 gateway的内容 gateway由三个部分组成, route路由:用来接收一个uri的 pre ...

  7. Git笔记(25) 选择修订版本

    Git笔记(25) 选择修订版本 1. 单个修订版本 1.1. 简短的 SHA-1 1.2. 分支引用 1.3. 引用日志 1.4. 祖先引用 2. 提交区间 2.1. 双点 2.2. 多点 2.3. ...

  8. Git笔记(23) 不同角色的贡献

    Git笔记(23) 不同角色的贡献 1. 私有小型团队 2. 私有管理团队 3. 派生的公开项目 4. 通过邮件的公开项目 1. 私有小型团队 可能会遇到的最简单的配置是有一两个开发者的私有(闭源)项 ...

  9. Git笔记(22) 项目贡献要点

    Git笔记(22) 项目贡献要点 1. 项目影响因素 1.1. 活跃贡献者的数量 1.2. 使用的工作流程 1.3. 提交权限 2. 提交准则 2.1. 检查空白错误 2.2. 独立变更 2.3. 提 ...

最新文章

  1. 美团点评基于MGR的CMDB高可用架构搭建之路
  2. JAVA 计算String类型的时间差(秒)
  3. 批处理 操作mysql_用批处理对MySQL进行数据操作
  4. 菜鸟php ajax,AJAX ASP/PHP
  5. 多核CPU上python多线程并行的一个假象(转)
  6. Android软键盘弹出引起的各种不适终极解决方案
  7. reply-code=404, reply-text=NOT_FOUND - no exchange
  8. 使用console进行 性能测试 和 计算代码运行时间
  9. php tp框架验证,tp5.1验证 - thinkphp5.1框架学习 - php中文网博客
  10. 使用STM32进行Flash地址空间的数据读取
  11. 教你利用阿里云服务器搭建一个随时随地的Web IDE
  12. 华为防火墙区域和地址规划:
  13. Android之经典Launcher主菜单模块学习
  14. 婚宴座位图html5,婚宴酒席座位安排图 20桌婚宴座位安排图
  15. SOPHP免费稳定的微信公众号开源框架
  16. 用53款全免费软件重装Windows(xbeta译)
  17. husky实现git commit规范
  18. 关于用python爬虫白嫖漫画这档子事
  19. Codevs 1814 最长链
  20. 计算机系统硬件认识步骤,任务1计算机硬件设备的认识.pptx

热门文章

  1. Code Forces 448C Painting Fence 贪婪的递归
  2. [Android1.6]横竖屏切换时自动弹出键盘的问题
  3. (转)Spring Boot 日志配置(超详细)
  4. js中的date操作
  5. 操作系统(13)-操作系统中的死锁及其预防、避免、检测与解除
  6. 算法高级(34)-搜索引擎速度快的秘诀-倒排索引介绍
  7. PowerDesigner(五)-概念数据模型(CDM生成LDM,PDM和OOM)
  8. 树莓派C语言点灯,树莓派3 b GPIO 点亮小灯泡
  9. 5.4shell编程3
  10. 算法(第4版) Chapter 5.2 单词查找树