这是我参与「第三届青训营 -后端场」笔记创作活动的的第10篇笔记
引言
为什么要学习 Git ?
- Git 在开源社区,协同工作中非常重要
为什么要安排这个课程 ?
- 许多新同学,对 Git完全不了解,或者是只知道基本命令,不了解正确的使用姿势和最佳实践
1. Git 是什么
1.1 版本控制
1.1.1 本地版本控制
- 依托于本地磁盘进行版本控制
1.1.2 集中式版本控制
- 存在一个统一的远端服务器,用于版本控制,本地不存储版本控制
1.1.3 分布式版本控制
- 每个库都拥有所有的版本控制信息,远端服务器用于不同库之间进行版本信息同步
1.2 发展历史
最初版由 Liunx 创始人 Linus Torvalds 花两周时间开发而成,主要是为了用于 Linux 项目的维护
1.3 衍生平台
- Gitlab github.com/
- Github gitlab.com/gitlab-org
- Gerrit android-review.googlesource.com/q/status:op…
除此之外,还有 bitbucket, Coding, 码云 等一系列平台
2. Git 命令基本使用方式和原理
2.1 Git目录介绍
2.1.1 Git Config
2.1.2 常见Git 配置
Git 配置,分成本地,用户,系统基本的配置
2.2 Git Remote
Git Remote 配置,分成 SSH 和 HTTP 两种协议实现,不同协议有不同的免密配置方式
2.2.1 HTTP Remote
2.2.2 SSH Remote
2.3 Git Add
将代码从工作区提交到暂存区
2.4 Git Commit
将暂存区代码提交到 Git 存储
2.5 Object
- Blob 存储文件内容信息
- Tree 存储目录树信息
- Commit 存储提交信息
- Tag 存储附注标签信息
2.6 refs
- Tag 仓库标签
- Branch 仓库分支
2.7 Annotation Tag
2.8 追溯历史版本
2.9 修改历史版本
2.10 Object
2.11 Git GC
2.12 完整的Git视图
2.13 Git Clone & Pull & Fetch
2.14 Git Push
3. Git 研发流程
3.1 不同的工作流
3.2 集中式工作流
3.2.1 集中式工作流-Gerrit
3.3 分支管理工具流
3.3.1 分支管理工具流-GitFlow
3.3.2 分支管理工具流-Github Flow
3.4 代码合并
3.5 选择合适的工作流
- 少量多次提交
- 保证 CR / CI 等流程通过后才可合入
- 尽量保证主分支整洁