【Git爬坡】Git概述

Git的诞生

中国有句老话叫”车到山前必有路,船到桥头自然直“,中国还有句老话叫”老天爷饿不死瞎家雀“。

话说有这么一天,一个叫Linux的这么一个大哥,写了一个超级牛逼的系统也叫linux,linux因其简单、高并发等诸多特点,受到各大公司和开发和追捧。Linux也有了一群粉丝,和Linux一起维护这个牛逼的系统。最初Linux采用的是什么机制从粉丝手里获取版本更迭呢?就类似现在的些建议信似的,Linux受到信之后先看一遍,恩 不错,自己手动将代码合并。久而久之,Linux他自个也类啊,所以找到了BitKeeper,最初BitKeeper还是免费给Linux用,后来一看,卧槽,你这么牛逼我还给你免费,算了,交保护费吧。Linux一气之下,花了两周时间自己写了一套版本控制系统,这就是最初的Git。

牛逼不?什么叫牛逼,这就叫牛逼

分布式Git & 集中式SVN

Git是最热门、最高效的代码管理工具。相对于SVN来说,Git是分布式的,而SVN是集中式的。

那么什么是分布式,什么是集中式呢?

先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。换句话说,集中式的版本控制系统每次都需要连线中央仓库,这样如果在没有网络的情况下,就gg了。并且如果在局域网内还好,如果网络条件差的情况下,针对大体量文件的更改就会很耗带宽

其次再说说分布式版本控制系统,首先分布式版本控制系统根本没有“中央服务器”的概念,每个人的主机上都有一份完整的代码副本,所以不需要依赖网络,即便有人本地仓库代码丢失,从别人的那里拷贝一份到自己机器上就可以了。既然每个人的电脑上都有一个代码版本,那么怎么进行多人协作开发呢?比如用户A修改了文件file,用户B也修改了文件file,这时,A和B只需要将各自的修改提交给对方就可以了。

但是真正遇到实际的协作开发时,为了交换各个分布式的代码仓库更改,也会引入一台中间服务器作为“中央服务区”,这里的中央服务器只进行更改交换。

那些还在用SVN或者刚刚陷入SVN中的同学们,不跳出来还等啥呢?