Git 的正确使用姿势与最佳实践|青训营笔记

118 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第10篇笔记

引言

image-20220526102355270

为什么要学习 Git ?

image-20220526102410572

  • Git 在开源社区,协同工作中非常重要

为什么要安排这个课程 ?

image-20220526103950679

  • 许多新同学,对 Git完全不了解,或者是只知道基本命令,不了解正确的使用姿势和最佳实践

1. Git 是什么

1.1 版本控制

image-20220526104056739

image-20220526104108685

1.1.1 本地版本控制

  • 依托于本地磁盘进行版本控制

image-20220526104120126

1.1.2 集中式版本控制

  • 存在一个统一的远端服务器,用于版本控制,本地不存储版本控制

image-20220526104145142

1.1.3 分布式版本控制

  • 每个库都拥有所有的版本控制信息,远端服务器用于不同库之间进行版本信息同步

image-20220526104210550

1.2 发展历史

image-20220526104356875

最初版由 Liunx 创始人 Linus Torvalds 花两周时间开发而成,主要是为了用于 Linux 项目的维护

1.3 衍生平台

除此之外,还有 bitbucket, Coding, 码云 等一系列平台

image-20220526104409266

2. Git 命令基本使用方式和原理

image-20220526104421065

2.1 Git目录介绍

image-20220526104447635

image-20220526104501649

2.1.1 Git Config

image-20220526104513132

2.1.2 常见Git 配置

Git 配置,分成本地,用户,系统基本的配置

image-20220526104523684

2.2 Git Remote

Git Remote 配置,分成 SSH 和 HTTP 两种协议实现,不同协议有不同的免密配置方式

image-20220526104537617

image-20220526104608264

2.2.1 HTTP Remote

image-20220526104617187

2.2.2 SSH Remote

image-20220526104823146

2.3 Git Add

将代码从工作区提交到暂存区

image-20220526104838667

2.4 Git Commit

将暂存区代码提交到 Git 存储

image-20220526104855701

2.5 Object

  • Blob 存储文件内容信息
  • Tree 存储目录树信息
  • Commit 存储提交信息
  • Tag 存储附注标签信息

image-20220526105114483

image-20220526105125832

image-20220526105143304

2.6 refs

  • Tag 仓库标签
  • Branch 仓库分支

image-20220526105200562

image-20220526105209983

image-20220526105218787

2.7 Annotation Tag

image-20220526105232612

2.8 追溯历史版本

image-20220526105253152

image-20220526105425057

2.9 修改历史版本

image-20220526105451237

image-20220526105503153

2.10 Object

image-20220526105600870

2.11 Git GC

image-20220526105626944

2.12 完整的Git视图

image-20220526105942694

2.13 Git Clone & Pull & Fetch

image-20220526105958422

2.14 Git Push

image-20220526110104314

image-20220526110148219

3. Git 研发流程

image-20220526110217637

3.1 不同的工作流

image-20220526121642804

3.2 集中式工作流

image-20220526121701505

3.2.1 集中式工作流-Gerrit

image-20220526121713287

3.3 分支管理工具流

image-20220526121725933

image-20220526130443248

3.3.1 分支管理工具流-GitFlow

image-20220526130459568

3.3.2 分支管理工具流-Github Flow

image-20220526130514115

image-20220526130523224

image-20220526130612873

image-20220526130635256

image-20220526130645225

3.4 代码合并

image-20220526130706722

image-20220526130725870

3.5 选择合适的工作流

  • 少量多次提交
  • 保证 CR / CI 等流程通过后才可合入
  • 尽量保证主分支整洁

image-20220526130739235

image-20220526130801625