课程概述
本项目将带你深入 Git 的心脏,从零开始构建。你将不再仅仅是 Git 的"使用者",而是它的"创造者"。通过以测试驱动开发 (TDD) 为核心的探索式学习方法,你将逐步掌握 Git 的核心设计思想和底层原理。
你将学到什么
- 掌握从第一性原理出发,通过TDD解决复杂问题的核心能力
- 从零构建一个与真实Git对象模型兼容的mini-git
- 深度理解Git内核设计思想,包括对象模型、索引、分支等
- 掌握内容寻址键值存储系统的实现
- 实现三方合并、`diff`算法等核心Git功能
- 学习如何将复杂系统重构为分层、面向对象的架构
适合人群
- 对版本控制系统内部机制感兴趣的开发者
- 希望深入理解Git工作原理的工程师
- 想要提升文件系统和算法能力的C++程序员
- 准备参加系统设计面试的求职者
课程大纲
第一阶段:创世纪 - 一个可靠的"保险箱"
4 个课时核心问题:如何从零开始,创建一个能可靠地存储和读取文件内容的版本库?实现 `init`, `hash-object`, `cat-file`。
- 1我们为什么要重复造轮子?
- 2创世纪 - 实现 `init`,搭建仓库骨架
- 3万物皆对象 - `blob` 与 `hash-object` 命令
- 4眼见为实 - `cat-file` 命令,读懂仓库
第二阶段:组装快照 - "智能购物车"索引
3 个课时新局限:手动管理单个文件对象太原始。我们需要一个更高层次的机制来"批量准备"一次提交。实现 `add` 和 `write-tree`。
- 1从“手动存档”到“智能购物车” - 索引的设计
- 2`add` 的诞生 - 填充购物车
- 3快照的蓝图 - `tree` 对象与 `write-tree`
第三阶段:创造历史 - `Commit` 与 `Branch`
2 个课时新局限:快照是匿名的,无法形成可追溯的历史线。实现 `commit-tree` 和高层封装 `commit`。
- 1历史的节点 - `commit` 对象与 `commit-tree`
- 2给历史起个名字 - `commit` 命令与分支
第四阶段:审视历史 - 让仓库"开口说话"
3 个课时新局限:我们创造了历史,但却无法方便地查看它。实现 `log`, `status`, `diff`。
- 1回溯时光 - `log` 命令
- 2知己知彼 - `status` 命令
- 3火眼金睛 - `diff` 命令
第五阶段:操纵历史 - 成为时空旅行者
4 个课时新局限:我们只能前进和观察,还不能自由地在历史中穿梭。实现 `branch`, `checkout` 和 `merge`。
- 1开枝散叶 - `branch` 命令
- 2改变世界 - `checkout` 命令
- 3百川归海 - `merge-base` 与三路合并
- 4大规模重构 - 从过程式到面向对象内核
第六阶段:价值升华 - 从项目到面试
3 个课时将项目经验转化为求职硬实力,从容应对大厂关于Git的深度面试问题。
- 1从项目到面试 - 展示你的Git内核知识
- 2终极考验 - Git核心面试题深度解析
- 3旅程的终点,也是新的起点
立即获取课程
添加微信,了解详情并获取课程权限,开始你的"从零实现"之旅。
扫码添加everystep微信
或直接添加微信号:wije00
购买流程
- 扫描左侧二维码,或直接添加微信号:wije00
- 备注:git
- 获取课程详情、价格及优惠政策
- 支付后即可获取专属课程访问权限
- 享受一对一技术答疑与指导服务
注: 课程价格¥399¥299,添加微信号 wije00 可咨询更多优惠详情
everystep
weiox
难度级别
中级到高级
标签
版本控制TDD系统设计文件系统算法实现
上线日期
2025/10/6
¥299
限时优惠