objects 目录包含所有存储库文件。这是 git 存储文件备份、存储库中的提交等的地方。这些文件都是加密和压缩的,它们看起来不会太多。git中有四种对象。
- 犯罪
- 树
- 斑点
- 注释标签
为了理解这些,我们需要知道什么是散列函数。散列函数是将任意大小的输入数据映射到固定大小的输出值的函数。
例如:
"I love StackOverflow" --> Hashing Function
|
dd76fc997fe194a71fe545fb51ff622762a293ff
学习的要点是哈希函数总是会dd76fc997fe194a71fe545fb51ff622762a293ff
在内容为 时给出输出"I love StackOverflow"
。
因此,我们可以推断散列函数是确定性的。您可以检查任何内容的哈希输出,也可以"I love StackOverflow"
在存储库中使用以下命令:
echo "I love StackOverflow" | git hash-object --stdin
来到你是否可以解密哈希码的问题。是的,有办法做到这一点。首先,您必须存储内容的哈希值。例如,
echo "I love StackOverflow" | git hash-object --stdin -w
通过在末尾添加 -w 我们的哈希将被存储,我们可以通过
git cat-file -p dd76fc997fe194a71fe545fb51ff622762a293ff
现在好奇为什么长哈希码甚至存在于 git 世界中,因为 git 负责查看存储库中存在的任何文件中所做的所有更改。因此,为了跟踪这些更改,git 分配了一个来自散列函数的长散列码,以简单地跟踪我们存储库中所做的每一个微小更改。
存储库中任何文件的每个细微更改都将被赋予一个哈希码,文件的内容将存储在称为“ blob ”的空间中。Blob 不会表示文件名,而只会包含带有哈希码的文件内容。