Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当存储一个文件的多个版本时,Git如何实现存储效率?_Git_Github_Dvcs - Fatal编程技术网

当存储一个文件的多个版本时,Git如何实现存储效率?

当存储一个文件的多个版本时,Git如何实现存储效率?,git,github,dvcs,Git,Github,Dvcs,Git将文件的每个版本存储在一个新对象中。当存储文件的多个版本时,此数据模型的存储效率不是很高。Git是如何实现存储效率的?Git通过两种方式提高存储效率: 将所有内容存储在其哈希下具有完美的重复数据消除效果:您一次又一次地拥有相同的文件/树?不,只有一个散列,所以只保留一个副本 将旧版本存储为与新版本的差异。因此,旧版本文件blob是它引用的新版本的差异。blob仍然存储在旧版本的散列下,保证通过解析diff重建的数据仍然与以前存储的数据相同 所有这些对于更高层的git来说都是完全透明的,唯一

Git将文件的每个版本存储在一个新对象中。当存储文件的多个版本时,此数据模型的存储效率不是很高。Git是如何实现存储效率的?

Git通过两种方式提高存储效率:

  • 将所有内容存储在其哈希下具有完美的重复数据消除效果:您一次又一次地拥有相同的文件/树?不,只有一个散列,所以只保留一个副本

  • 将旧版本存储为与新版本的差异。因此,旧版本文件blob是它引用的新版本的差异。blob仍然存储在旧版本的散列下,保证通过解析diff重建的数据仍然与以前存储的数据相同

  • 所有这些对于更高层的git来说都是完全透明的,唯一可见的效果是提高了效率