hqwhqwhq's blog

这个博客将会被长期维护

0%

GitNotes

2021.1.11

今天把Git的原理简单看了一下,没想到那么简单(大道至简的道理吧)。记一下小的关键点

  1. Git的版本控制是使用Git 数据库
  2. 版本更新不是基于Diff的保存,就是简单的新的版本的快照
    1. Git基于内容来进行Hash,但是有一个tree来管理目录结构,所以应该说Git基于版本和目录位置进行控制

Q&A

  1. 版本快照会不会爆空间?

    理论上可能会?不过Git的版本快照不是简单地保存文件,而是进过了一系列压缩之类的,所以占用空间非常少(所以Git的核心是压缩算法吗?)

  2. 如果修改了文件名,Git如何识别?

    如果是由Git控制的系统,那么打开以后的每一个文件都是Git上一次的快照,所以Git系统已经定位了parent version,不用担心track不到文件名修改

    更重要的原因,Git引入了tree对象用来track文件目录(这样可以定位每一个add remove的文件,即使Git是基于内容来hash的)