1

git 版本控制系统,是一种分布式日志(在概念上与 raft 共识协议有一些相似之处

Raft 和其他一些系统都有log compaction的概念,所以新客户端不需要遍历整个 change set 来应用更改。

我的问题是:git 有日志压缩的概念吗?

4

1 回答 1

1

新客户端不需要遍历整个更改集来应用更改。

不,git 是快照的集合(工作树的完整副本)。
当您在 git 中访问提交时,您不必遍历所有日志或历史记录来构建其内容。

请参阅“ git 如何存储文件? ”:内部存储确实在包文件中使用了增量(即“压缩”的形式,而不仅仅是“日志压缩”),但每个提交仍然代表完整的工作树。

http://i.stack.imgur.com/AQ5TG.png

每次您在 Git 中提交或保存项目状态时,它基本上都会拍摄您当时所有文件的样子,并存储对该快照的引用。
为了提高效率,如果文件没有更改,Git 不会再次存储该文件——只是一个指向它已经存储的前一个相同文件的链接。

于 2016-05-07T04:23:05.080 回答