Git如何获取分支机构的数据?

时间:2012-10-06 22:48:20

标签: git branch git-branch

我想知道Git在哪里保存分支机构的所有数据。 每次切换分支时,所有数据都会就地放回原位,而另一个特定分支的数据就会被删除。

较慢的CPU / HDD需要更长时间才能从另一个分支恢复数据吗?内部如何运作?

1 个答案:

答案 0 :(得分:3)

Git将文件数据存储在名为“blobs”的对象中。它们存储在存储库中的.git/objects目录中。

blob到目录结构的映射是由称为“树”的对象完成的,这些对象是递归的 - 在子目录的情况下,一棵树可以引用其他树。

提交依次引用一个特定的树,该树是提交时存储库根目录的状态。

分支只是指向特定提交的指针。

当你签出一个分支时,Git会去查找它指向的提交。从那里,它加载提交引用的树,并从中获取应该匹配树中每个位置的精确blob。然后,它将这些blob的内容加载到正确的文件路径中。

为了帮助解决这个问题,它使用索引,它是文件状态到目录树中路径的映射,以及它们内容的散列和上次修改时间的记录。 Git使用这些哈希和mtimes来快速识别需要更新的文件,并加载适当的内容。


任何类型的工作都会在较慢的CPU + HDD上花费更长的时间,因为它不受时间限制。它将使用尽可能多的CPU /磁盘速度。也就是说,Git相当高效,所以除非您有大量文件或非常大的文件内容更改(或设备速度非常慢),否则通常会非常快。