這是起底Git系列的第一篇,本篇先來介紹一下版本控制的歷史。
以史為鑒可以明得失 —— 李世民
我們在開發(fā)中可能會有下面的需求,亟待解決,而這正是版本控制所做的事
如果用一張圖來總結(jié)的話,我想就是下面這張
版本控制大致可以下面三類,其每一類都是一個時代的產(chǎn)物,按照歷史規(guī)律,新生事物總會取代陳舊事物,現(xiàn)在處在DVCS時代,但你可能還在陳舊的公司代碼見過CVCS,我們很幸運生活在這個時代
如果你不知道上面三個分類的意思,那就往下看吧,下面聊一聊每一個的歷史
不說話,寫過論文的應該都懂下面這張圖,在沒有版本控制工具之前,聰明的我們通過手動復制解決
本地版本控制原理很簡單,就是在本地建一個倉庫,記錄每一個版本和版本之間的關(guān)系,這就解決了我們上面手動維護的尷尬
這個時代的代表是rcs,自行百度吧
但本地版本控制有一個很大的問題,就是沒法多人協(xié)作
為了解決寫作的問題,聰明的程序員想了個辦法,大家共用一個倉庫over了嗎,于是乎把倉庫搬到了遠端機器,大家都訪問同一個遠程倉庫,這種模式就成為中心倉庫模式
這個時代的代表工具就是SVN,這也是大部分公司還在用的工具
但這種模式有一個致命的缺點,就是中心的單點,如果服務(wù)器恰好壞了,那代碼全部丟失,所以大公司一般都有很好的容災機制
隨著開源運動的爆發(fā),中心倉庫模式很難適應全球多人寫作的模式,于是乎分布式版本控制誕生了
DVCS結(jié)合了LVCS和CVCS兩者的優(yōu)點,本地倉庫讓一切都在本地,同時分布式的設(shè)計又讓每一個節(jié)點都能成為遠端
DVCS的缺點也是不容忽視的,本地倉庫會導致首次clone變慢,其學習曲線優(yōu)點陡峭(相對而言)
如果你有任何疑問的話,歡迎留言討論;如果本系列文章對你有幫助的話,那我很榮幸,別忘了打賞哦,O(∩_∩)O哈哈~
最后感謝你的閱讀,O(∩_∩)O哈哈~
更多建議: