一:分布式工作流程 概念式的东西
1:集中式工作流
定义:一个中心集线器,或者说仓库。可以接受代码,所有人将自己的工作与之同步。
特点:如果两个开发者从中心仓库克隆代码下来,同时作了一些修改,第二个开发者在推送修改之前,必须先将第一个人的工作合并进来,这样才不会覆盖第一个人的修改。
2:集成管理者工作流
定义:Git 允许多个远程仓库存在,每个开发者拥有自己仓库的写权限和其他所有人仓库的读权限。
特点:
- 这种情形下通常会有个代表“官方”项目的权威的仓库。
- 这是 GitHub 和 GitLab 等集线器式(hub-based)工具最常用的工作流程。
- 你可以持续地工作,而主仓库的维护者可以随时拉取你的修改。
流程:
- 项目维护者推送到主仓库。
- 贡献者克隆此仓库,做出修改。
- 贡献者将数据推送到自己的公开仓库。
- 贡献者给维护者发送邮件,请求拉取自己的更新。
- 维护者在自己本地的仓库中,将贡献者的仓库加为远程仓库并合并修改。
- 维护者将合并后的修改推送到主仓库。
3:司令官和副官工作流
定义:多仓库工作流程的变种, 被称为副官(lieutenant)的各个集成管理者分别负责集成项目中的特定部分。 所有这些副官头上还有一位称为司令官(dictator)的总集成管理者负责统筹。
特点:
- 超大型项目才会用到这样的工作方式
- 这种工作流程并不常用,只有当项目极为庞杂,或者需要多级别管理时,才会体现出优势
流程:
- 普通开发者在自己的特性分支上工作,并根据 master 分支进行变基。 这里是司令官的 master 分支。
- 副官将普通开发者的特性分支合并到自己的 master 分支中。
- 司令官将所有副官的 master 分支并入自己的 master 分支中。
- 司令官将集成后的 master 分支推送到参考仓库中,以便所有其他开发者以此为基础进行变基。