Git 的正确使用姿势与最佳实践:团队协作和版本控制的最佳实践 | 青训营笔记

65 阅读3分钟

前言

本节课简单介绍了git的使用,让我们能够更快融入公司的开发流程中。

1.GIT的介绍

1.版本控制

  • 一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统
  • 常见的方式 image.png
    • 本地控制
      • 原理:本地保存所有变更的补丁集,可以理解成就是所有的 Diff,通过这些补丁,我们可以计算出每个版本的实际的文件内容
      • 缺点:只能在本地使用,无法进行团队协作
    • 集中控制
      • 原理:提供一个远端服务来保存文件,所有用户的提交都提交到该服务器中;增量保存每次提交的Diff,如果提交的增量中和远端现存的文件存在冲突,则需要本地提前解决冲突
      • 缺点:本地不存储版本管理的概念;分支上的支持不够好;用户本地不保存所有版本的代码
    • 分布式控制
      • 原理:每个库都存有完整的提交历史,可以直接在本地进行代码;提交每次提交记录的都是完整的文件快照,而不是记录增量;通过 Push 等操作来完成和远端代码的同步
      • 优点:分布式开发;分支管理功能强大;校验和机制保证完整性
      • 缺点:学习成本高;对大文件的支持不是特别好

2.GIT的历史

  • Github:全球最大的代码托管平台
  • Gitlab:全球最大的开源代码托管平台
  • Gerrit:Google 开发的一个代码托管平台

2.GIT的基本使用方式

1.GIT基本命令

image.png

  • 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:热修复分支
  • 优点:如果能按照定义的标准严格执行,代码会很清晰,并且很难出现混乱

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