Git是什么?
- Git是一个分布式的版本控制系统。
Git的“控制”有哪些?
- 从抽象的层面讲,Git的大部分操作可简单归纳为“保存、复制和合并”这三种控制。
在Git的概念里,怎样才算是一个“版本”?
- Git并不是一个实时运行的系统,它是一个懒惰的系统。全靠我们调用命令才会发生控制。
- 我们可以对一个当前的版本进行多次编辑,直到我们认为与原版本有足够差别为止。最后通过命令手动产生新的版本。
为什么Git不是一个实时监控的系统
就一般的概念来说,当次我们修改并保存文件时,伴随着文件内容的变化,这个文件就会产生一个新版本。
同样对于一个文件夹来说,当文件夹里的文件被修改时,这个文件夹也会产生一个新版本。作为一个自认为有良好保存习惯的我来说,如果我要修订一个文档的错误,我会习惯性每修改一处便保存一次。
当我修订完毕的时候,就可能产生了数个版本(因为有多处错误)。要是我准备修订文件夹里的多个文档,这个文件甚至会产生上百个版本。明显的,这样的做法会占用大量的硬盘空间。而且实时监控修改也会耗费一定的内存,可能会影响主系统的运行,从而影响效率。
最关键的是,大部分中间版本都是无保存意义的。例如,将“我是ABC”改成“我是XYZ”。先删除“ABC”,再输入“XYZ”。我删除“ABC”之后先保存了一次。最后就会产生“我是ABC”、“我是”和“我是XYZ”三个版本。明显中间“我是”这个版本是无意义的。
所以我认为懒惰型的版本控制系统更能适应各种规模的需求,而实时型则适合于一些需要严格控制版本或需要集中管理的情况。
“分布式”是什么?
- 与“分布式”相对的词语是“集中式”。
“集中式”的主要概念就是在一个“中心”进行管理。在多人协作的情况下,所有的版本都通过这个中心进行“保存、复制和合并”等控制。
集中式的优势在于容易管理。但是一旦这个“中心”挂掉,就会导致整个工作网络的瘫痪。针对这问题于是出现了“分布式”,它的主要概念是人人都是“中心”。每人的电脑都拥有所有的版本。在原“中心”挂掉的情况下, 每个人都可以正常地工作。同时因为每台电脑中的版本都是完整的,所以不通过原“中心”也可以进行版本的同步,即电脑与电脑间直接交换版本。不用担心因“中心”挂掉而会中止所有工作。
分布式的最大优势在于可以持续地工作,但是在较多人协作的情况,效率可能比集中式更差。所以即使在分布式环境下,也会在网络设置一个“中心”用于交换版本。