Git 的使用方式 | 青训营笔记

79 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

上一篇文章介绍了背后起源的故事,这一篇我们来仔细研究 Git 的使用方式。

由于基本的使用方式很容易就能在各种手册上看到,所以本文不涵盖基本使用方式,侧重于使用的流程和思路。

集中式工作流

集中式工作流的特点是其只依托于 master 分支进行研发活动。最主要的实践是 Google 开发的 Gerrit,侧重点是代码评审,其在 AOSP 的开发中有很广泛的应用。

工作方式

  1. 获取远端 master 的代码
  2. 直接在 master 分支完成修改
  3. 提交前拉取最新的 master 代码和本地的代码进行合并(使用 rebase),如果有冲突在此时解决冲突
  4. 提交本地代码到 master

优点

  • 提供强制的代码评审机制,保证代码的质量
  • 提供更丰富的权限功能,可以针对分支做细粒度的权限管控
  • 保证 master 的历史整洁性
  • AOSP 多仓库的场景支持更好

缺点

  • 开发人员较多的情况下,更容易出现冲突
  • 对于多分支的支持极差,想要区分多个版本的线上代码时,更容易出现问题
  • 一般只有管理员才能创建仓库,比较难在项目之间形成代码复用

分支管理工作流

集中式工作流是在 Git 的使用实践中诞生的,其有多个变种,Git Flow、GitHub Flow、GitLabFlow。它们之间的差异不是很大。

分支管理的工作流是基于几个分支之间操作的。 其通常包含几种类型的分支,例如:

  • 主干分支
  • 开发分支
  • 特性分支
  • 发布分支
  • 热修复分支

工作方式

  1. 其他用户创建自己的仓库或自己的分支
  2. 所有的代码在自己的分支上面进行提交
  3. 完成一定功能后,向主分支提交 PR(GitHub)或 MR(GitLab),请求将当前分支合并入主分支

优点

如果能按照定义的标准严格执行,代码会很清晰,并且很难出现混乱。

缺点

流程过于复杂,上线的节奏会比较慢。由于其过于复杂,研发容易不照标准执行,从而导致代码出现混乱。

总结

没有最好的工作流程,只有最合适的工作流程。而对于一般小型规模的团队的话,使用 GitHub 是最佳的。