我们知道Git与SVN有着很多区别。Git相比SVN更加高效,其中主要的原因就是它把文件内容按元数据形式存储,可以理解为存到了一种类似K/V型的数据库里。
那么我们来分析下,它到底是如何存储文件以及如何管理提交与回滚的。
1.基础环境准备
在当前目录初始化一个用于测试的Git仓库git_test_01
$ git init git_test_01;cd git_test_01;
创建一个文件并写入内容
$ echo 'first line' > test-file-01.txt;
添加到暂存区并且提交该文件
$ git add -A;git commit -am "first commit";
使用git log --pretty=oneline
查看提交
如此,我们便成功的提交了一个文件。那么让我们进入**.git目录下的objects**文件夹看看发生了什么。
我们发现这里有个d8
开头的目录,与我们上次提交后产生的hash码的开头前两位是一样的。
我们使用命令ls -l d8
看看它究竟有什么
这里是一个名称为85f1211e0cd1930bfdeecda5ac85998639f7d5
的文件,我们发现将d8
和这个文件名组合一下居然和上面的提交id是一样的。这两者有什么关联呢?
2.使用Git命令查看提交内容
2.1 内容写入及读取
在探究上