自从git诞生于2005年以来,它就已经在开源环境中大受欢迎,并且我们在工作的时候经常使用它。它是一个很棒的VCS工具,有许多优点,但学习它并不容易。我认为,在我们习惯使用git过程中喜欢它最好的方式就是通过了解它的内部工作方式。就像Edward Thomson所说的一句话:
Git命令只是对数据存储的泄漏抽象
这就我们平常无论记住多少git命令或技巧,但如果不了解git的工作原理,就会时常对git奇怪方式感到困惑。
所以,在对git的理解中,本文将要讲述的第一件事情就是git的核心和灵魂–数据模型。
首先,我们可以在本地项目目录初始化一个空的git仓库。
git init
git会自动创建一个.git仓库,让我们看看它的工作目录。
.
|-- HEAD
|-- config
|-- description
|-- hooks
| |-- applypatch-msg.sample
| |-- commit-msg.sample
| |-- fsmonitor-watchman.sample
| |-- post-update.sample
| |-- pre-applypatch.sample
| |-- pre-commit.sample
| |-- pre-merge-commit.sample
| |-- pre-push.sample
| |-- pre-rebase.sample
| |-- pre-receive.sample
| |-- prepare-commit-msg.sample
| `-- update.sample
|-- info
| `-- exclude
|-- objects
| |-- info
| `-- pack
|-- refs
| |-- heads
| `-- tags
|-- tree.md
`-- tree1.md
8 directories, 18 files
现在我把重点放在.git/object目录上,然后我们对其进行一些修改。
让我们创建一个index.c文件。
touch index.c
给它添加一些内容。
#inlcude <stdio.h>
vo