起底Git 版本控制簡史

2018-06-15 20:08 更新

這是起底Git系列的第一篇,本篇先來介紹一下版本控制的歷史。

以史為鑒可以明得失 —— 李世民

解決的問題

我們在開發(fā)中可能會有下面的需求,亟待解決,而這正是版本控制所做的事

  • 回到過去
  • 改變歷史
  • 古今對比
  • 并行開發(fā)
  • 誰動了我的代碼

如果用一張圖來總結(jié)的話,我想就是下面這張

分類

版本控制大致可以下面三類,其每一類都是一個時代的產(chǎn)物,按照歷史規(guī)律,新生事物總會取代陳舊事物,現(xiàn)在處在DVCS時代,但你可能還在陳舊的公司代碼見過CVCS,我們很幸運生活在這個時代

  • LVCS(Local VCS)
  • CVCS(Central VCS)
  • DVCS(Distributed VCS)

如果你不知道上面三個分類的意思,那就往下看吧,下面聊一聊每一個的歷史

史前時代

不說話,寫過論文的應該都懂下面這張圖,在沒有版本控制工具之前,聰明的我們通過手動復制解決

LVCS(Local VCS)

本地版本控制原理很簡單,就是在本地建一個倉庫,記錄每一個版本和版本之間的關(guān)系,這就解決了我們上面手動維護的尷尬

這個時代的代表是rcs,自行百度吧

但本地版本控制有一個很大的問題,就是沒法多人協(xié)作

CVCS(Central VCS)

為了解決寫作的問題,聰明的程序員想了個辦法,大家共用一個倉庫over了嗎,于是乎把倉庫搬到了遠端機器,大家都訪問同一個遠程倉庫,這種模式就成為中心倉庫模式

這個時代的代表工具就是SVN,這也是大部分公司還在用的工具

但這種模式有一個致命的缺點,就是中心的單點,如果服務(wù)器恰好壞了,那代碼全部丟失,所以大公司一般都有很好的容災機制

DVCS(Distributed VCS)

隨著開源運動的爆發(fā),中心倉庫模式很難適應全球多人寫作的模式,于是乎分布式版本控制誕生了

DVCS結(jié)合了LVCS和CVCS兩者的優(yōu)點,本地倉庫讓一切都在本地,同時分布式的設(shè)計又讓每一個節(jié)點都能成為遠端

DVCS的缺點也是不容忽視的,本地倉庫會導致首次clone變慢,其學習曲線優(yōu)點陡峭(相對而言)

總結(jié)

如果你有任何疑問的話,歡迎留言討論;如果本系列文章對你有幫助的話,那我很榮幸,別忘了打賞哦,O(∩_∩)O哈哈~

最后感謝你的閱讀,O(∩_∩)O哈哈~

繼續(xù)學習

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號