作为一名软件开发者,熟练掌握 Git 已经成了必备技能。尽管在日常工作中,我们常用的 Git 命令不外乎 addcommitpushpull 这几个,甚至很多 IDE 和 AI 助手已经能够帮我们轻松解决诸如合并冲突等常见问题,但我始终认为,在这个工具越来越智能化的时代,深入理解 Git 依然非常重要。

Git 不仅仅是一个版本控制工具,它的设计思想与内部原理,更能帮助我们真正理解代码版本管理背后的“发生了什么”以及“如何做得更好”。因此,我决定撰写这篇教程,希望能带你一起深入 Git 的核心,探索其运作机制与最佳实践。

示例仓库:https://github.com/bobozi-cmd/tig

参考文献:Pro Git II

<aside> ⚠️

本教程默认读者已经掌握最基本的Git使用方法

本人的Git环境为:git version 2.39.5 (Apple Git-154)

</aside>

Git的基本工作原理

Git和其他版本控制工具的主要差别在于如何对待数据,其他系统以文件变更列表的方式存储信息,将保存的信息看作一组基本文件和对每个文件的改动,而Git把数据看作是对小型文件系统的一组快照,每次提交更新时,Git对全部文件制作一个快照并保存快照的索引。

存储每个文件和初始版本的差异

存储每个文件和初始版本的差异

Git存储项目随版本改变的快照

Git存储项目随版本改变的快照

Git工作区

Git管理的文件有三种状态:

以此引入Git项目的三个工作区:

基本的Git工作流程如下📍

image.png