当我做“git push”时,统计意味着什么? (总计,三angular洲等)

这里是一个例子:

$ git push -u myserver master Counting objects: 22, done. Delta compression using up to 8 threads. Compressing objects: 100% (14/14), done. Writing objects: 100% (14/14), 1.89 KiB | 0 bytes/s, done. Total 14 (delta 10), reused 0 (delta 0) To myserver.com:git/myrepo.git ed46414..0cae272 master -> master Branch master set up to track remote branch master from myserver. 

基本上,对我来说唯一的数字是“使用多达8个线程”中的8个,因为我有一个带有超线程的四核处理器,所以我可以运行8个线程。

那里有22个? 为什么说22和14,其他8发生了什么? 为什么它说0字节/秒,因为它做了什么,花了有限的时间? 什么是“总”和“三angular洲”和“重用”?

有关示例的详细信息:上面的示例是从Mac OS X上的“terminal”复制粘贴的。我手动执行了“replace”以replace“myrepo”和“myserver.com”,其他所有内容都是逐字的。 仓库有910个提交,而且自上次推送以来我做了大约3次提交。 3个新的提交至less影响了3个文件。 回购包含超过一千个文件。

简短的回答

这仅仅是git命令git count-objects -v输出的输出(当gcpullclone时输出同样的命令)。 更多信息在手册页: git-count-objects(1) 。

 $ git count-objects -v ... size: 14 # The "Compressing objects: 100% (14/14)" part (the size in KiB) in-pack: 22 # The "Counting objects: 22" part (the number of objects) ... 

长答案

 Counting objects: 22, done. 

这是git 22内部对象被计算为特定的提交。 在git中几乎所有的东西都是一个对象,基本上它们是在你的.git / objects文件夹下的散列。 更多信息在手册页: 9.2 Git内部 – Git对象 。

 Compressing objects: 100% (14/14), done. 

这是在发送之前压缩对象的git。 14/14是压缩的KiB中的进展(14 KiB压缩)。

 Writing objects: 100% (14/14), 1.89 KiB | 0 bytes/s, done. 

这是git发送(如果远程)和写入对象。 1.89 KiB | 0字节/秒是KiB中的进程和速度(完成时为0字节/秒)。

 Total 14 (delta 10), reused 0 (delta 0) 

这是git中的packfilealgorithm的输出(参见9.4 Git Internals – Packfiles ),相当模糊。 它基本上将未使用的对象(通常是较旧的历史logging) 包装.git / objects / pack中 。 包装后,git检查是否可以重新使用包(因此重用0部分)。 delta 0部分是来自包装或来自再利用的KiB的增益。

Git是一个内容可寻址的文件系统。 即它需要一个对象(文件,树,提交)并将其存储在可由散列寻址的文件中。

假设你在文件中做了一个非常小的改变。 git应该将完整文件存储为不同的对象吗? 那好吧。 但偶尔(在推,拉),git计算文件更改为增量和存储他们,而不是完整的文件。

这意味着,最新版本的文件被完整存储(因为它应该是最容易获得的),相同文件的旧版本只是包含两者之间的差异的对象等等。

这样,git可以节省空间,同时仍然可以重新构build你所修改的文件。

现在回到你的问题:

Counting objects: 22, done. :Git正在计算与您正在提交的提交相关的对象。

Total 14 (delta 10) :Git通过find10个三angular洲能够减less对象的数量。

reused 0 (delta 0) :Git可以重用delta对象,如果相同的话已经存在。 例如,如果可能在其他文件中引入了类似的更改,则增量可能是相似且可重复使用的。 在这里,没有什么可重用的。

Writing objects: 100% (14/14), 1.89 KiB | 0 bytes/s, done. 这里Git正在通过networking发送(或写入)对象,并且可以看到进度和速度统计信息。

希望这可以帮助。