前言
本节课简单介绍了git的使用,让我们能够更快融入公司的开发流程中。
1.GIT的介绍
1.版本控制
- 一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统
- 常见的方式
- 本地控制
- 原理:本地保存所有变更的补丁集,可以理解成就是所有的 Diff,通过这些补丁,我们可以计算出每个版本的实际的文件内容
- 缺点:只能在本地使用,无法进行团队协作
- 集中控制
- 原理:提供一个远端服务来保存文件,所有用户的提交都提交到该服务器中;增量保存每次提交的Diff,如果提交的增量中和远端现存的文件存在冲突,则需要本地提前解决冲突
- 缺点:本地不存储版本管理的概念;分支上的支持不够好;用户本地不保存所有版本的代码
- 分布式控制
- 原理:每个库都存有完整的提交历史,可以直接在本地进行代码;提交每次提交记录的都是完整的文件快照,而不是记录增量;通过 Push 等操作来完成和远端代码的同步
- 优点:分布式开发;分支管理功能强大;校验和机制保证完整性
- 缺点:学习成本高;对大文件的支持不是特别好
- 本地控制
2.GIT的历史
- Github:全球最大的代码托管平台
- Gitlab:全球最大的开源代码托管平台
- Gerrit:Google 开发的一个代码托管平台
2.GIT的基本使用方式
1.GIT基本命令
- git init 项目初始化
- git config 配置(用户、邮箱等)
- git remove
- git add
- git commit
- git clone 拉取完整仓库到本地目录
- git fetch 拉取最新代码到本地
- git pull 拉取远端某分支和本地代码合并
3.GIT的研发流程
1.集中式工作流
-
特点:只依托于 master 分支进行研发活动
-
工作方式
- 获取远端 master 代码
- 直接在 master 分支完成修改
- 提交前拉取最新的 master 代码和本地代码进行合并(使用rebase),如果有冲突需要解决冲突
- 提交本地代码到 master
-
优势
- 提供强制的代码评审机制,保证代码的质量
- 提供更丰富的权限功能,可以针对分支做细粒度的权限管控
- 保证 master 的历史整洁性
- Aosp 多仓的场景支持更好
-
缺点
- 开发人员较多的情况下,更容易出现冲突
- 对于多分支的支持较差,想要区分多个版本的线上代码时,更容易出现问题
- 一般只有管理员才能创建仓库,比较难以在项目之间形成代码复用,比如类似的fork 操作就不支持
2.分布式工作流
-
类型
- master:主干分支
- develop:开发分支
- feature:特性分支
- release:发布分支
- hotfix:热修复分支
-
优点:如果能按照定义的标准严格执行,代码会很清晰,并且很难出现混乱
-
缺点:流程过于复杂,上线的节奏会比较慢。由于太复杂,研发容易不按照标准执行,从而导致代码出现混乱