深入理解和运用 Git
序
Git 本质上只是一个版本管理的工具,但当我们更了解这个工具的底层实现时,我们可以更好的去使用它并理解它的行为。
在工作中经常会遇到一些小伙伴对 Git 不够熟悉,比如不知道如何规避冲突,处理不可避免的冲突等。
本文适合有一定 Git 基础的读者阅读,我会在其中分享一些我对 Git 的了解和使用经验,并默认读者已经了解了基础的概念,如 add、commit、pull、push、remote、fetch 等。
Git 对象
该章节主要是简略的讲述下 10.2 Git 内部原理 - Git 对象 中的内容。
Git 的核心部分是一个简单的键值对数据库(key-value data store),你可以向 Git 仓库中插入任意类型的内容,它会返回一个唯一的键(sha1),通过该键可以在任意时刻再次取回该内容。
Git 的 commit、我们存储的文件、文件夹都是不同类型的 Git 对象,分别对应着 commit object
、blob object
、tree object
。
这些不同类型的 Git 对象在写入 Git 后,都存储于仓库(下文将简称 repo)的 repo/.git/objects
目录下,详细介绍见下文。