重要的文件:HEAD index objects refs
objects目录存储所有数据内容 refs目录存储指向数据(分支)的提交对象的指针 HEAD文件指向目前被检出的分支 index文件保存stage信息
Git的核心部分是一个简单的键值对数据库(key-value data store). 你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索(retrieve)该内容
soumatoMacBook-Pro:gitdemo songp$ touch 1.txt
soumatoMacBook-Pro:gitdemo songp$ vi 1.txt
soumatoMacBook-Pro:gitdemo songp$ git add 1.txt
soumatoMacBook-Pro:gitdemo songp$ git hash-object 1.txt
9f4d96d5b00d98959ea9960f069585ce42b1349a
soumatoMacBook-Pro:gitdemo songp$ cd .git/objects/9f
soumatoMacBook-Pro:9f songp$ ls
4d96d5b00d98959ea9960f069585ce42b1349a
git hash-object输出一个长度为40个字符的校验和,这是一个SHA-1的哈希值。
soumatoMacBook-Pro:9f songp$ git cat-file -p 9f4d96d5b00d98959ea9960f069585ce42b1349a
Hello Git
git cat-file可以根据SHA1给出内容