第二章 集中式和分布式版本控制

2021-07-24 05:30:00 字數 1647 閱讀 3687

前面已經說過,我們為什麼需要版本控制。

而在版本管理軟體的具體實現上,人類經過了兩個階段。

第一階段   集中式版本控制

理念非常簡單,通過乙個單一的集中式伺服器,儲存所有的檔案修訂版本。

當使用者修改了檔案後,傳送到伺服器上,伺服器和原檔案進行對比,記錄下變化的內容。

變化的內容包括修改時間,修改人,修改的具體內容,所以更形象的說伺服器儲存了各種檔案「補丁」。

缺點在於如果伺服器發生宕機,則所有使用者都無法提交更新,也就無法協同工作。

如果伺服器磁碟發生故障,還有可能丟失部分或者全部專案資料。

同時協同工作時,需要聯網才能使用。

我們可以把這種模式想象成學校圖書館。

圖書館統一管理所有圖書,而學生則從圖書館借走(歸還)圖書。

圖書館具有至高無上的地位,學生們借走(歸還)圖書都需要圍繞它進行。

第二階段   分布式版本控制

理念也非常簡單,任何乙個使用者都是乙個「伺服器」。

因此分布式版本控制,並不關心檔案變化的內容,它只關心檔案是否有改變,如果有,那麼就備份。

雖然在結構上依然要使用伺服器,但此時的伺服器沒有至高無上的地位,它起到的更多是方便「交換」作用。

因為每乙個使用者都相當於伺服器,不僅所有的檔案都被完整的「拷貝」,版本控制的工具也可以在使用者機器上任意使用,所以分布式版本控制無需聯網。

我們可以把這種模式想象成動畫片的「分身術」,每乙個分身都和本體相同。

要學習的git就屬於分布式版本控制,它有以下特點:

①速度快

②設計簡單

③對非線性開發模式的強力支援,允許上千個並行開發的分支

④有能力高效管理類似linux核心一樣(千萬**級)的超大規模專案

git是由linux系統的締造者linux torvalds開發的,網路上還流傳著一則故事(不知真假):

linus雖然建立了linux系統,但linux系統的壯大是靠全世界熱心的志願者參與的,這麼多人在世界各地為linux系統編寫**,那linux的**是如何管理的呢?

事實是,在2023年以前,世界各地的志願者把源**檔案通過diff的方式發給linus,然後由linus本人通過手工方式合併**。

不過,到了2023年,linux系統已經發展了十年了,**庫之大讓linus很難繼續通過手工方式管理了。

於是linus選擇了乙個商業的版本控

制系統bitkeeper,bitkeeper的東家bitmover公司出於人道主義精神,授權linux社群免費使用這個版本控制系統。

bitkeeper是商用軟體,肯定是閉源的,而linux系統完全屬於免費開源,兩者精神有點格格不入。

社群裡的一位仁兄叫做andrew,他試圖破解bitkeeper的協議,被bitmover公司發現,於是bitmover公司怒了,要收回linux社群的免費使用權。

linus torvalds覺得求人不如求己,花了兩周時間自己用c語言寫了乙個分布式版本控制系統,這就是git!

乙個月之內,linux系統的原始碼已經由git管理了!

分布式和集中式的版本控制的區別!

chapter 開始了解git 1.先談談版本控制的一些事 2.git誕生背後的一些故事 3.版本控制 集中式vs分布式 4.git的思想和基本工作原理 5.git在windows下的安裝 前面提到,linus一直痛恨cvs及svn這些集中式的版本控制系統,為什麼呢?git是分布式版本控制系統,那麼...

集中式vs分布式

linus一直痛恨的cvs及svn都是集中式的版本控制系統,而git是分布式版本控制系統,集中式和分布式版本控制系統有什麼區別呢?先說集中式版本控制系統,版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給 伺服...

集中式和分布式版本控制系統的區別

集中式 先說集中式版本控制系統。簡單的說就是,版本庫是集中的存放於 伺服器的。幹活的時候,先要去 伺服器裡領取最新的版本,然後在開始幹活。幹完活在將自己的版本上傳到 伺服器。就好比要改一本書,先要從圖書館裡將書籍借閱出來,然後改完了之後,在將圖書歸還給圖書館。然後別人看到的就是最新的版本了。缺點 缺...