有没有办法在Git中有效地阅读以前版本的文件? (我使用Git作为内容管理系统的数据库,需要它显示历史记录)。
Git不存储完整版本的文件,它只存储差异,因此,如果您需要以前的版本 - 您不能只从磁盘读取它,您应该让Git使用差异来计算它。
似乎GitHub以某种方式做到了这一点,例如,你可以看到previous version of file。它是否真的为每个HTTP请求计算它或以某种方式优化它?
答案 0 :(得分:4)
错误:git ALWAYS存储完整版本的文件。因此,查看任何修订版本同样有效。
这与仅存储差异(补丁)的其他一些修订系统形成鲜明对比。特别是Cvs因为这个原因(对于拥有许多用户的大型存储库)来访问深层历史记录或非干线分支是可怕的。
供参考,To 方便地访问特定版本的特定文件(sha / reference):
git show HEAD:full/path/to/file
用标签,分支或git sha(长十六进制数)替换头
路径是相对于git存储库的基础的完整路径 - 而不是文件系统根目录。我只提到这个,因为它咬了我几次 - 你不能cd
进入一个目录,并期望不指定完整的路径。
维基百科(所有真实和善良的家)支持我:
如果维基百科不是你的包,仔细阅读git internals manual也会验证它。