Git 内部原理图解——对象、分支以及如何从零开始建仓库
https://www.freecodecamp.org/chinese/news/git-internals-objects-branches-create-repo/
我们中的许多人每天都在使用 git,但是有多少人知道它的内部是怎么运作的呢?
例如我们使用 git commit 时发生了什么?提交(commit)与提交之间保存的是什么?两次提交之间难道只是文件的差异(diff)吗?如果是,这个差异是如何编码的?还是说每次提交都会保存一个当前仓库的完整快照(snapshot)呢?我们使用 git init 时到底发生了什么?
很多 git 的使用者都不知道这几个问题的答案,但这又有什么关系呢?
首先,作为专业人员,我们应当努力弄清楚手中使用的工具,尤其是那些我们一直都在使用的——比如 git。
但是我深刻地意识到,理解 Git 的工作原理在很多情况下都非常有用——不管是解决合并冲突、进行有趣的变基(rebase)操作,还是在某些东西变得有点不对劲的时候。
如果你有足够的 git 经验,对 git pull、git push、git add 或 git commit 这些命令得心应手,你会从本文中获益。
不过,为了确保我们在 git 的原理(尤其是本文上下所使用的术语)上步调一致,我们将从概览开始。
我也在 YouTube 上传了一个涵盖本文所有内容的系列视频——欢迎在此观看。
我们会从对象(object)——blob、树对象(tree) 和 提交对象(commit) 开始,然后简单讨论一下 分支(branch) 及其实现方式,之后会深入 工作目录(working directory)、暂存区(staging area) 和 仓库(repository)。
从.git目录内容一步步分析,了解git