本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一块儿天天进步一点点git
首先咱们先来向Git仓库中存储数据bash
//终端输入,其中 -w 参数就表示向Git仓库中写入
echo 'test content' | git hash-object -w --stdin
//输出
d670460b4b4aece5915caf5c68d12f560a9fe3e4
复制代码
上面命令的功能是向Git仓库中存入 test content
,咱们会看到输出了一串40位长度的内容,并且能够在 objects
目录下看到一个文件。微信
这就是开始时 Git 存储内容的方式——一个文件对应一条内容,以该内容加上特定头部信息一块儿的 SHA-1 校验和为文件命名。 校验和的前两个字符用于命名子目录,余下的 38 个字符则用做文件名。post
而后咱们看看这个文件的内容:ui
咱们会发现这个文件里面并非test content
,那这个文件内容怎么就变了呢?spa
test content
就变成上面图中的内容了//把内容取出来
git cat-file -p 70460b4b4aece5915caf5c68d12f560a9fe3e4
//输出
test content
复制代码
上面咱们演示的是直接同Git仓库操做数据,包括存数据取数据,而咱们实际开发中,通常都是操做文件,对文件进行版本控制3d
下面咱们来看看Git仓库是怎么对文件进行版本控制的版本控制
//咱们先建立一个文件 test.txt ,内容为 version 1
echo 'version 1' > test.txt
复制代码
上述命令咱们就建立了一个内容为 version 1 , 文件名为 test.txt 的文件,这个时候若是咱们用 git status
命令能够查看当前工程全部状态(开头说的3种状态)的文件信息,以及操做提示,这个是一个颇有用的命令code
直接用上面写入内容的方法向Git仓库中写入数据,也就是cdn
//直接向Git中写入数据
git hash-object -w test.txt
//输出
83baae61804e65cc73a7201a7252750c76066a30
复制代码
咱们能够把内容取出来看看:
//取出刚刚存的内容
git cat-file -p 83baae61804e65cc73a7201a7252750c76066a30
//输出
version 1
复制代码
这就是存储文件的过程
上述方式有什么问题?
怎么解决这些问题呢?这就须要Git中的第二个对象—— 树对象。下一次咱们就来看看树对象
欢迎关注个人公众号查看更多精彩文章!
复制代码