Git objects/中目录的名称代表什么?

Git objects/中目录的名称代表什么?,git,subdirectory,Git,Subdirectory,我想这是访问git中特定文件的快速方法。但我不知道目录名06,0d,17,27,29,2e代表什么以及为什么目录名是06 objects ├── 06   │   └── d378aef5b28791df7c6b5a58c866d8569cac87 ├── 0d │   └── 25470613db871791afd43ae724cbbe367c30ef ├── 17 │   └── af6db51eca422ab8629a40cb54b8e5d8da2b3f

我想这是访问git中特定文件的快速方法。但我不知道目录名
06,0d,17,27,29,2e
代表什么以及为什么目录名是
06

objects
   ├── 06
   │   └── d378aef5b28791df7c6b5a58c866d8569cac87
   ├── 0d
   │   └── 25470613db871791afd43ae724cbbe367c30ef
   ├── 17
   │   └── af6db51eca422ab8629a40cb54b8e5d8da2b3f
   ├── 27
   │   └── d749cd2a7e3d2b1e27080505e37b301f73108d
   ├── 29
   │   └── faabec2bc6b5a7b00a5d6d9ebc9f2a5daf3d5b
   ├── 2e
   │   └── e648b03e6b4bf45515a8eb3a3ab62400940fe2
在Git中,当Git散列一个对象时,上面的输出是一个40个字符的校验和SHA-1散列。Git使用该散列中的前两个字符作为子目录的名称,其余38个字符作为文件名

如果再次检查objects目录,您可以看到它现在包含一个新内容的文件。这就是Git最初存储内容的方式 — 作为每个内容的单个文件,使用内容及其标题的SHA-1校验和命名。子目录以SHA-1的前2个字符命名,文件名为剩余的38个字符

在Git中,当Git散列一个对象时,上面的输出是一个40个字符的校验和SHA-1散列。Git使用该散列中的前两个字符作为子目录的名称,其余38个字符作为文件名

如果再次检查objects目录,您可以看到它现在包含一个新内容的文件。这就是Git最初存储内容的方式 — 作为每个内容的单个文件,使用内容及其标题的SHA-1校验和命名。子目录以SHA-1的前2个字符命名,文件名为剩余的38个字符


将一个大目录拆分为几个小目录以使文件系统保持良好状态,这有点令人困惑,通常也称为“哈希”。在许多文件系统中,遍历包含大量条目的目录的速度很慢,因此最好是100个目录包含100个文件,而不是一个目录包含10000个文件。@tripleee我也打算对此发表评论,但保持沉默,因为我不清楚为什么Linus选择了两个字符而不是其他数字。我们还可以观察到,拥有一个最多有1000个不同文件夹的文件夹系统,也可能使浏览对象更容易。将一个大目录拆分为较小的目录以保持文件系统正常运行,这有点令人困惑,也常常被称为“哈希”。在许多文件系统中,遍历包含大量条目的目录的速度很慢,因此最好是100个目录包含100个文件,而不是一个目录包含10000个文件。@tripleee我也打算对此发表评论,但保持沉默,因为我不清楚为什么Linus选择了两个字符而不是其他数字。我们还可以观察到,拥有一个最多有1000个不同文件夹的文件夹系统,也可能使浏览对象变得更容易。重复的(虽然已经回答过了,所以我将把这个放进去链接它们)感谢Torek给了我更多的知识,我对你的答案投了赞成票:)重复的(虽然已经回答了,所以我将把这个放在链接中)感谢Torek给了我更多的知识,我对你的答案投了赞成票:)