性能高效的Git历史

时间:2012-08-30 04:37:11

标签: performance git

有没有办法在Git中有效地阅读以前版本的文件? (我使用Git作为内容管理系统的数据库,需要它显示历史记录)。

Git不存储完整版本的文件,它只存储差异,因此,如果您需要以前的版本 - 您不能只从磁盘读取它,您应该让Git使用差异来计算它。

似乎GitHub以某种方式做到了这一点,例如,你可以看到previous version of file。它是否真的为每个HTTP请求计算它或以某种方式优化它?

1 个答案:

答案 0 :(得分:4)

错误:git ALWAYS存储完整版本的文件。因此,查看任何修订版本同样有效。

这与仅存储差异(补丁)的其他一些修订系统形成鲜明对比。特别是Cvs因为这个原因(对于拥有许多用户的大型存储库)来访问深层历史记录或非干线分支是可怕的。


供参考,To 方便地访问特定版本的特定文件(sha / reference):

git show HEAD:full/path/to/file

用标签,分支或git sha(长十六进制数)替换头

路径是相对于git存储库的基础的完整路径 - 而不是文件系统根目录。我只提到这个,因为它咬了我几次 - 你不能cd进入一个目录,并期望不指定完整的路径。


维基百科(所有真实和善良的家)支持我:

Git stores each revision of a file as a unique blob object. The relationships between the blobs can be found through examining the tree and commit objects. Newly added objects are stored in their entirety using zlib compression.

如果维基百科不是你的包,仔细阅读git internals manual也会验证它。