git随手记

117 阅读1分钟

git最好的学习地点是官方出的pro-git,还是中文的。

svn和git的区别

集中式和分布式

  • svn是集中式的,有一个中央服务器,这上面记录了各个版本。客户端只有最新的版本。如果想回到过去的某个版本,那么需要和中央服务器进行通信。这时候中央服务器会有单点故障,是个问题。
  • git是分布式的,每个机器上都有一份完整的仓库,里面有所有的历史版本及提交记录。

基于差异和基于索引的存储

  • svn是基于差异的存储,例如我们有一个version1,然后又有了一个version2,这时候存的不是完整的version2,而是version2和version1的差异。通过计算得到完整的version2。设想一下,如果有100个版本,从第100个版本回到第一个版本就需要经过99次的还原,是效率低下的。
  • git是基于索引的存储,还是上面的例子,version2的时候会完整的存储并且会存一个version1的索引,能快速回到version1。当version100的时候,会存version1~99的索引,这当然会很冗余了,但是git有很强大的压缩算法,能让开发者忽略这些。值得研究