鍍金池/ 教程/ Java/ 集中式 vs 分布式
操作標(biāo)簽
多人協(xié)作
解決沖突
Git 的誕生
工作區(qū)和暫存區(qū)
搭建 Git 服務(wù)器
Bug 分支
配置別名
從遠(yuǎn)程庫(kù)克隆
分支
添加遠(yuǎn)程庫(kù)
分支管理策略
撤銷修改
安裝 Git
管理修改
生成 SSH key
GitHub
倉(cāng)庫(kù)狀態(tài)
忽略特殊文件
刪除文件
Feature 分支
創(chuàng)建與合并分支
創(chuàng)建版本庫(kù)
創(chuàng)建標(biāo)簽
版本回退
集中式 vs 分布式

集中式 vs 分布式

Linus 一直痛恨的 CVS 及 SVN 都是集中式的版本控制系統(tǒng),而 Git 是分布式版本控制系統(tǒng),集中式和分布式版本控制系統(tǒng)有什么區(qū)別呢?

先說(shuō)集中式版本控制系統(tǒng),版本庫(kù)是集中存放在中央服務(wù)器的,而干活的時(shí)候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開(kāi)始干活,干完活了,再把自己的活推送給中央服務(wù)器。中央服務(wù)器就好比是一個(gè)圖書(shū)館,你要改一本書(shū),必須先從圖書(shū)館借出來(lái),然后回到家自己改,改完了,再放回圖書(shū)館。

http://wiki.jikexueyuan.com/project/git-tutorial/images/git1.jpg" alt="" />

集中式版本控制系統(tǒng)最大的毛病就是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)內(nèi)還好,帶寬夠大,速度夠快,可如果在互聯(lián)網(wǎng)上,遇到網(wǎng)速慢的話,可能提交一個(gè) 10M 的文件就需要 5 分鐘,這還不得把人給憋死啊。

那分布式版本控制系統(tǒng)與集中式版本控制系統(tǒng)有何不同呢?首先,分布式版本控制系統(tǒng)根本沒(méi)有“中央服務(wù)器”,每個(gè)人的電腦上都是一個(gè)完整的版本庫(kù),這樣,你工作的時(shí)候,就不需要聯(lián)網(wǎng)了,因?yàn)榘姹編?kù)就在你自己的電腦上。既然每個(gè)人電腦上都有一個(gè)完整的版本庫(kù),那多個(gè)人如何協(xié)作呢?比方說(shuō)你在自己電腦上改了文件 A,你的同事也在他的電腦上改了文件A,這時(shí),你們倆之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了。

和集中式版本控制系統(tǒng)相比,分布式版本控制系統(tǒng)的安全性要高很多,因?yàn)槊總€(gè)人電腦里都有完整的版本庫(kù),某一個(gè)人的電腦壞掉了不要緊,隨便從其他人那里復(fù)制一個(gè)就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問(wèn)題,所有人都沒(méi)法干活了。

在實(shí)際使用分布式版本控制系統(tǒng)的時(shí)候,其實(shí)很少在兩人之間的電腦上推送版本庫(kù)的修改,因?yàn)榭赡苣銈儌z不在一個(gè)局域網(wǎng)內(nèi),兩臺(tái)電腦互相訪問(wèn)不了,也可能今天你的同事病了,他的電腦壓根沒(méi)有開(kāi)機(jī)。因此,分布式版本控制系統(tǒng)通常也有一臺(tái)充當(dāng)“中央服務(wù)器”的電腦,但這個(gè)服務(wù)器的作用僅僅是用來(lái)方便“交換”大家的修改,沒(méi)有它大家也一樣干活,只是交換修改不方便而已。

http://wiki.jikexueyuan.com/project/git-tutorial/images/git2.jpg" alt="" />

當(dāng)然,Git 的優(yōu)勢(shì)不單是不必聯(lián)網(wǎng)這么簡(jiǎn)單,后面我們還會(huì)看到 Git 極其強(qiáng)大的分支管理,把 SVN 等遠(yuǎn)遠(yuǎn)拋在了后面。

CVS 作為最早的開(kāi)源而且免費(fèi)的集中式版本控制系統(tǒng),直到現(xiàn)在還有不少人在用。由于 CVS 自身設(shè)計(jì)的問(wèn)題,會(huì)造成提交文件不完整,版本庫(kù)莫名其妙損壞的情況。同樣是開(kāi)源而且免費(fèi)的 SVN 修正了 CVS 的一些穩(wěn)定性問(wèn)題,是目前用得最多的集中式版本庫(kù)控制系統(tǒng)。

除了免費(fèi)的外,還有收費(fèi)的集中式版本控制系統(tǒng),比如 IBM 的 ClearCase(以前是 Rational 公司的,被 IBM 收購(gòu)了),特點(diǎn)是安裝比 Windows 還大,運(yùn)行比蝸牛還慢,能用 ClearCase 的一般是世界 500 強(qiáng),他們有個(gè)共同的特點(diǎn)是財(cái)大氣粗,或者人傻錢多。

微軟自己也有一個(gè)集中式版本控制系統(tǒng)叫 VSS,集成在 Visual Studio 中。由于其反人類的設(shè)計(jì),連微軟自己都不好意思用了。

分布式版本控制系統(tǒng)除了 Git 以及促使 Git 誕生的 BitKeeper 外,還有類似 Git 的 Mercurial 和 Bazaar 等。這些分布式版本控制系統(tǒng)各有特點(diǎn),但最快、最簡(jiǎn)單也最流行的依然是 Git!