当我做“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
输出的输出(当gc
, pull
和clone
时输出同样的命令)。 更多信息在手册页: 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发送(或写入)对象,并且可以看到进度和速度统计信息。
希望这可以帮助。