猿问

Git如何存储文件?

Git如何存储文件?

我刚开始学习git,为了做到这一点,我开始阅读。Git社区手册在这本书中,他们说SVN和CVS存储文件之间的区别,Git存储所有文件的快照。

但我不太明白他们所说的快照是什么意思。GIT是否真的复制了每个提交中的所有文件,因为这就是我从他们的解释中理解的。

如果有人有更好的资源来学习GIT,我会很感激的。


交互式爱情
浏览 1068回答 2
2回答

湖上湖

GIT逻辑地将每个文件存储在它的SHA 1下。这意味着,如果存储库中有两个内容完全相同的文件(或者重命名一个文件),则只存储一个副本。但这也意味着,当您修改文件的一小部分并提交时,将存储该文件的另一份副本。git解决这个问题的方法是使用Pack文件。偶尔,来自repo的所有“松散”文件(实际上,不仅仅是文件,而是包含提交和目录信息的对象)都会被收集并压缩到一个包文件中。使用zlib压缩Pack文件。类似的文件也是增量压缩的。在拖动或推送时也会使用相同的格式(至少在某些协议中是这样),因此这些文件不必再次被重新压缩。这样做的结果是,包含整个未压缩工作副本、未压缩的近期文件和压缩的旧文件的GIT存储库通常相对较小,比工作副本的大小两倍。这意味着它比使用相同文件的SVNrepo要小,即使SVN没有在本地存储历史记录。
随时随地看视频慕课网APP
我要回答