標籤:

集中式版本控制系統和分散式版本控制系統有什麼區別呢?

我是個學生,接觸SVN和GIT沒多久,所以對集中式和分散式這些名詞很陌生,不理解之間的區別和含義。誰能通俗的講一下這兩者的區別呢?謝謝了。


提問者還是學生,其實他問題的本質是想知道SVN與GIT的區別,然後大家都會說區別,就是分散式還是集中式。我覺得這樣是不準確的,這是從實現方式的角度來說的。從用戶的角度來說分布還更麻煩,難倒不是嗎?

GIT真正的優點是體現在速度更快,提供更多的分支管理和合作方式,給程序員更多自由。那麼這上面優點到底是怎麼體現出來的呢?這就要在學習使用中感受了。。。


Git - 關於版本控制


1.集中式版本控制系統(CVS,SVN)

有一個中央伺服器,幹活的時候,用的都是自己的電腦,需要先從中央伺服器獲取最新的版本,然後開始幹活,幹完活了,再把自己的修改推動給中央伺服器。

缺點:需要聯網的情況下才能使用,上傳速度慢。

2.分散式版本控制系統(最常見的Git)

分散式版本控制系統沒有中央伺服器,每個人的電腦上都用一個完整的版本庫,只要交換對方的修改就行,把各自的修改推送給對方。

分散式版本控制系統通常也有一台充當「中央伺服器」的電腦,但這個伺服器的作用僅僅是用來方便「交換」大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。

優點:安全性高,不需要聯網

(參考廖雪峰老師的Git教程)


集中式版本管理系統——main branch就在那裡

分散式版本管理系統——main branch在哪寫在文檔里


集中式和分散式版本管理的本質區別就是分散式不信任所謂的中心節點,擔心中心節點失效導致代碼損失。

集中式好處是本地不用初始化太多東西就能開始工作,並且當代碼更改量很大後,不太佔用本地空間。分散式就把伺服器上所有的代碼數據(包括所有歷史)都要拷貝下來。

分散式就可以擺脫必須有個中心節點才能幹活的尷尬問題。但如果是多人緊密協作,每天多個update。必須有個中心節點協調,那和集中式區別也不大。

所以用什麼看你們的需要,公司內用大家都熟悉的即可。

另外,集中式版本管理,不代表伺服器只有一台。就像淘寶就一個網站,但伺服器有上千台一樣。


集中式:伺服器掛了,所有庫操作都完蛋了,更像http下載

分散式:互相之間拉來拉去,更像bt下載,有源就可以


如果以SVN和git作為集中式和分散式的對照樣例來解釋的話

集中式就是所有代碼庫都只保存在一個中心伺服器並且為核心代碼庫,C端全部是其的離線拷貝,所有提交最終都要匯總到中心伺服器,並且可以影響全部離線拷貝。

分散式是所有代碼都可以隨意從一個P端分發到不同的P端上,並且各自平行並互不干擾,本地提交隻影響本地代碼庫,只有推送到指定的中心伺服器(意義上的,和SVN的實質性的不同),並且其他P端更新下來後才會影響其他P端。中心伺服器也只是其中一個P端,不具實質性(可以任意指定)。

以上為我的理解,大概……


大致明白了,集中式的版本基本由一台伺服器管理,分散式是多台相互推送。


推薦閱讀:

一個項目在Linux和Windows上同時開發,如何進行版本控制?
VisualSVN-Server Subversion TortoiseSVN 之間的區別、聯繫有哪些?
Mac 上最好用的 SVN 客戶端是什麼?
SVN repository found,關於AWVS掃描出的SVN漏洞?
Word Office 2016 for mac啟動就崩潰?

TAG:Git | SVNSubversion |