Git與其他版本控制系統的區別

admin發表於2018-08-08

當前業界,版本控制系統並非只有Git一家,而是由於Git突出的優點,才異軍突起,得到絕對優勢的廣泛使用。

一.個人版本控制系統:

個人僅在本機實現版本控制,可以使用很早之前出現的個人版本控制系統,肯定要比賦值黏貼更為科學便捷。

最為流行的一款叫做rcs(現在用的已經很少,畢竟Git等版本控制系統完全可以實現相同的功能)。

原理是儲存並管理檔案補丁(特定格式的文字檔案),記錄著對應檔案修訂前後的內容變化。

所以可以通過不斷打補丁,計算出各個版本的檔案內容。

圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/08/001114chlvihhmhrrowvec.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

二.集中式版本控制系統:

在Git出現之前,集中式版本控制系統是業界主流。所有的版本都放在伺服器,當專案參與者使用的時候,需要首先聯網,然後獲取最新的版本,修改完畢後,再聯網推送到中央伺服器,聯網是必須的,是否有網路決定是否可以正常工作,網路環境的好壞決定著工作效率。

主要優點如下:

(1).可以實現團隊合作開發。

(2).系統管理者可以輕鬆控制每一位專案參與者的許可權。

(3).管理方便,邏輯明確,操作簡單,上手快。

但是集中式版本控制系統缺點也比較明顯:

(1).對伺服器要求較高,尤其專案較大。

(2).如果中央伺服器出現問題,所有專案參與者將無法進行提交。

(3).對網路要求較高,否則可能由於延遲影響開發。

(4).檔案的安全性也受到考驗,如果中央伺服器的資料丟失,那麼找回可能存在較大困難。

(5).不適合開源開發。圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/08/001140ar4ghxi3d0cqsecm.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

三.分散式版本控制系統:

分散式版本控制系統沒有"中央伺服器"這個概念,每一個專案參與者都擁有完整的版本庫,每一臺電腦都是平行對等的,所以這樣工作的時候就可以在很大程度上脫離網路,可以不斷的在本地修改提交,聯網後再推送到其他專案合作開發者,這樣雙方都可以看到對方的修改,然後進行恰當的操作處理。

優點如下:

(1).每一個專案合作者都擁有完整的版本庫,可以在本地進行修改提交,很大程度上脫離網路。

(2).又由於每一個專案合作者擁有完整的版本庫,程式碼的安全性得到保證(這個安全性是說的程式碼的完整性)。

圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/08/001208kkiu9llmulp5l3ml.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

四.處理檔案方式的區別:

Git與其他版本控制系統一個更重要的區別是,對管理的檔案處理方式的不同。

其他版本控制系統管理方式圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/08/001233siabfzfl33bmofwu.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

分析如下:

(1).版本一具有三個檔案。

(2).版本二和版本一相比新增兩個檔案4和5。

(3).版本三和版本二相比修改了檔案2和3。

(4).版本四和版本三相比新增了檔案6和7。

其他版本系統是記錄檔案的每一次變化的內容,也就是記錄具體發生了哪些差異和上一個版本相比產生哪些變化,然後版本控制系統可以通過這些版本差異(也可以說是每一次的補丁)最終還原到指定版本。

Git版本控制系統管理方式圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/08/001300hexbxaon0o0pb2g8.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

分析如下:

(1).版本一具有三個檔案。

(2).版本二和版本一相比新增兩個檔案4和5。

(3).版本三和版本二相比修改了檔案2和3。

(4).版本四和版本三相比新增了檔案6和7。

可能有朋友會有疑問,這難道不和上面的一模一樣嗎,在最終結果上確實如此,但是Git對檔案的處理方式有本質不同。

(1).其他版本控制系統記錄差異。

(2).Git雖然能夠感知差異,但是它記錄的是所有檔案的整體快照,記錄整個目錄的樹狀結構。詳細分析如下:

版本二比版本一新增兩個檔案,檔案1、2和3保持不變,那麼Git能夠感知到檔案的改變與不變,那麼在這次快照的目錄樹中:1、2和3檔案的指向和版本一的目錄樹完全一樣,檔案4和5指向新的檔案,同樣道理,在版本三的目錄樹中,檔案1、4和5和版本一和版本二中的指向完全一樣,檔案2和3指向新的檔案,以此類推。

總結如下:

(1).其他版本控制系統具體記錄每次版本的改變。

(2).Git則是對檔案進行總體快照,如果檔案沒變,則指向相同檔案,否則指向新的檔案。

相關文章