![]() |
1
3
Git存储库是文件的集合,“对象”是packfiles(压缩的)或loose(未压缩的文件)。
如中所述 Git Basics :
注:非常 第一 为Git本身提交( commit e83c516
|
![]() |
2
2
这实际上是一个合理的高层观点。但是,当使用这种方法时,Git 键值存储(以及一些可选的附加存储,我们将在这里忽略它们)。一个取名字Git称之为 参考文献 ,它具有特殊的形式,如分支和标记名称,并将它们转换为哈希ID值。另一个数据库接受散列ID键并将它们转换为对象。 commit实际上是“commit”类型的对象。每次提交都引用一个“tree”类型的(单个)对象,该对象表示保存的快照。树依次引用其他子树和/或“blob”对象,这些对象表示文件内容,或者对于符号链接,是链接的目标。
VonC said
,这些都只是
物体
松散的物体
,在这种情况下,它位于
(pack文件的格式很复杂,有几个版本。)
松散对象的文件名是它的hash ID键,用十六进制表示,前两个字母与剩余的38分开,用
在相对罕见的情况下,可以将同一对象存储为松散对象 和 (如果任何一个副本损坏,您可以尝试所有其他副本,但通常情况下,更容易转到单独的克隆。Git还将验证每个克隆操作的哈希完整性。Git并没有附带各种修复工具来尝试定位辅助副本,但它确实有工具来分解各个包文件,因此您可以手动执行此操作。) |
![]() |
Harry · 如何在编译时获取克隆的git仓库的标签 7 月前 |
![]() |
Ooker · 如何从blob中删除秘密? 7 月前 |
![]() |
hasdrubal · git日志图智能分支过滤器 7 月前 |
![]() |
J. Doe · 为什么git中没有跟踪git文件? 8 月前 |