用现代C++从零实现Git

本项目将带你深入 Git 的心脏,从零开始构建。你将不再仅仅是 Git 的"使用者",而是它的"创造者"。通过以测试驱动开发 (TDD) 为核心的探索式学习方法,你将逐步掌握 Git 的核心设计思想和底层原理。

返回课程列表

课程概述

本项目将带你深入 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微信二维码

扫码添加everystep微信

或直接添加微信号:wije00

购买流程

  1. 扫描左侧二维码,或直接添加微信号:wije00
  2. 备注:git
  3. 获取课程详情、价格及优惠政策
  4. 支付后即可获取专属课程访问权限
  5. 享受一对一技术答疑与指导服务
注: 课程价格¥399¥299,添加微信号 wije00 可咨询更多优惠详情

everystep

weiox

难度级别

中级到高级

标签

版本控制TDD系统设计文件系统算法实现

上线日期

2025/10/6

¥399

¥299

限时优惠