2012-08-30 18 views
0

有没有一种方法可以有效地读取Git中以前版本的文件? (我使用Git作为内容管理系统的数据库,并且需要它显示历史记录)。如果你需要以前的版本 - 你不能只是从磁盘读取它,你应该让Git使用差异来计算它。性能高效的Git历史

看来,GitHub莫名其妙,例如,你可以看到previous version of file。它是否真的为每个HTTP请求计算它或以某种方式优化它?

回答

4

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

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


作为参考,为了方便访问一个特定的文件在特定版本(SHA /参考):

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仔细阅读也验证它。

+0

这并非完全正确。打包回购时,git会将文件存储在diff中,但您不应该担心这些:)。 – Chronial