git version control system是一种分布式日志(与raft共识协议有一些概念上的相似之处)。
Raft和其他一些系统都有log compaction的概念,因此新客户不需要遍历整个更改集来应用更改。
我的问题是: git是否有日志压缩的概念?
答案 0 :(得分:1)
新客户不需要遍历整个更改集以应用更改。
不,git是快照的集合(工作树的完整副本) 当您在git中访问提交时,您不必遍历所有日志或历史记录来构建其内容。
请参阅" How does git store files?":内部存储空间确实使用delta in pack files(这是"压缩"的形式,而不仅仅是"日志压缩& #34;),但每个提交仍然代表完整的工作树。
每次你在Git中提交或保存项目状态时,它基本上都会记录当时所有文件的样子并存储对该快照的引用。
为了提高效率,如果文件没有改变,Git不会再次存储文件 - 只是指向它已存储的上一个相同文件的链接。