从GitHub的指导页面上找到的链接,对于想初步建立对Git认知的人很有帮助,本来想翻译一下的,仔细看了一下,官方已经翻译成中文了。直接存储链接吧。
顺便存储从里面摘抄的两张图片,很好的说明了Git与其他VCS系统在基础设施设计方面的差异。
传统VCS系统(例如SVN)每个版本存储的内容都是相较于上一个版本的差异。
Git存储的是每个文件的快照(如果未改变,则只存储一个链接)
很显然,如果是一个很大的文件(比如100M),每次修改中间几个字节,那么每次在commit的时候都会建立一个全新的文件,这个有点儿恐怖。不过换一个角度想,作为版本控制软件的git,恐怕存储的最多的还是文本文件,而没人会写一个超大的文本文件。一般超大的文件都会是视频、音频、图片等二进制文件。对于这种文件,像SVN这种基于行的差异存储也是没什么用武之地的。
另外,git在存储的时候还分upack和pack两种,unpack是gzip压缩后存储,pack则是先diff然后压缩存储。相当于pack存储方式也是存储差异的部分,依然能够节省空间。