使用 Github 的时候,你有没有见过下面的提示?$ git clone https://github.com/torvalds/linux
Cloning into 'linux'...
remote: Counting objects: 4350078, done.
remote: Compressing objects: 100% (4677/4677), done.
Receiving objects: 4% (191786/4350078), 78.19 MiB | 8.70 MiB/s这段提示说,远程代码库一共有4350078个对象需要克隆。这就叫"清点对象"(counting objects),Github需要实时计算出来,需要克隆的对象总数。这个过程非常慢,根据Github的披露,像Linux kernel这样巨大的库,清点一次需要8分钟!也就是说,发出git clone命令后,会干等八分钟,然后才会开始真正的数据传输。这当然是无法忍受的。Github团队一直想解决这个问题。后来,他们终于发现了一种新的算法,现在清点一次只要3毫秒!为了理解这个算法,你必须先知道,什么是Git的对象。简单说,对象就是文件,最重要的对象有三种。快照对象(Commit)目录对象(Directory)文件对象(File)每次提交代码的时候,会生成一个commit对象,里面有对应的当前
...
继续阅读
(85)