Git與其他版本控制系統的區別
當前業界,版本控制系統並非只有Git一家,而是由於Git突出的優點,才異軍突起,得到絕對優勢的廣泛使用。
一.個人版本控制系統:
個人僅在本機實現版本控制,可以使用很早之前出現的個人版本控制系統,肯定要比賦值黏貼更為科學便捷。
最為流行的一款叫做rcs(現在用的已經很少,畢竟Git等版本控制系統完全可以實現相同的功能)。
原理是儲存並管理檔案補丁(特定格式的文字檔案),記錄著對應檔案修訂前後的內容變化。
所以可以通過不斷打補丁,計算出各個版本的檔案內容。
圖示如下:
二.集中式版本控制系統:
在Git出現之前,集中式版本控制系統是業界主流。所有的版本都放在伺服器,當專案參與者使用的時候,需要首先聯網,然後獲取最新的版本,修改完畢後,再聯網推送到中央伺服器,聯網是必須的,是否有網路決定是否可以正常工作,網路環境的好壞決定著工作效率。
主要優點如下:
(1).可以實現團隊合作開發。
(2).系統管理者可以輕鬆控制每一位專案參與者的許可權。
(3).管理方便,邏輯明確,操作簡單,上手快。
但是集中式版本控制系統缺點也比較明顯:
(1).對伺服器要求較高,尤其專案較大。
(2).如果中央伺服器出現問題,所有專案參與者將無法進行提交。
(3).對網路要求較高,否則可能由於延遲影響開發。
(4).檔案的安全性也受到考驗,如果中央伺服器的資料丟失,那麼找回可能存在較大困難。
(5).不適合開源開發。圖示如下:
三.分散式版本控制系統:
分散式版本控制系統沒有"中央伺服器"這個概念,每一個專案參與者都擁有完整的版本庫,每一臺電腦都是平行對等的,所以這樣工作的時候就可以在很大程度上脫離網路,可以不斷的在本地修改提交,聯網後再推送到其他專案合作開發者,這樣雙方都可以看到對方的修改,然後進行恰當的操作處理。
優點如下:
(1).每一個專案合作者都擁有完整的版本庫,可以在本地進行修改提交,很大程度上脫離網路。
(2).又由於每一個專案合作者擁有完整的版本庫,程式碼的安全性得到保證(這個安全性是說的程式碼的完整性)。
圖示如下:
四.處理檔案方式的區別:
Git與其他版本控制系統一個更重要的區別是,對管理的檔案處理方式的不同。
其他版本控制系統管理方式圖示如下:
分析如下:
(1).版本一具有三個檔案。
(2).版本二和版本一相比新增兩個檔案4和5。
(3).版本三和版本二相比修改了檔案2和3。
(4).版本四和版本三相比新增了檔案6和7。
其他版本系統是記錄檔案的每一次變化的內容,也就是記錄具體發生了哪些差異和上一個版本相比產生哪些變化,然後版本控制系統可以通過這些版本差異(也可以說是每一次的補丁)最終還原到指定版本。
Git版本控制系統管理方式圖示如下:
分析如下:
(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則是對檔案進行總體快照,如果檔案沒變,則指向相同檔案,否則指向新的檔案。
相關文章
- 版本控制系統之gitGit
- Git 版本控制系統的完整指南Git
- Git版本控制系統安裝Git
- 一、Git分散式版本控制系統Git分散式
- Git版本控制與優缺點Git
- Git與GitHub的區別Github
- 以Windows作業系統為例,詳解版本控制系統—Git的操作Windows作業系統Git
- Git 開源的版本控制系統-05-tags 標籤管理Git
- Git 開源的版本控制系統-02-base usage 基本用法Git
- 版本控制系統
- windows 作業系統裡 git bash 和 git cmd 的區別Windows作業系統Git
- git log與git reflog區別Git
- 版本控制軟體Git的安裝與使用Git
- 版本控制系統之基於httpd搭建私有git倉庫httpdGit
- Git(1) —— 版本控制Git
- Git 版本控制工具的使用Git
- win10系統教育版怎麼樣?win10系統教育版跟其他版本有何區別Win10
- Git打標籤與版本控制規範Git
- git與svn的區別面試Git面試
- 『現學現忘』Git基礎 — 1、版本控制系統介紹Git
- 集中式版本控制與分散式版本控制——Git 學習筆記01分散式Git筆記
- git stash save與git stash push區別Git
- package.json 中的版本號,符號 ~ 與 ^ 的區別及其他符號的含義PackageJSON符號
- 【4】版本控制系統SVN
- Linux系統常見的發行版本以及區別!Linux
- Linux系統常用的版本有哪些?有何區別呢?Linux
- git引入_版本控制介紹Git
- Git分散式版本控制工具Git分散式
- Git程式碼版本控制流程Git
- 【Python】pyenv的版本控制及global、shell、local命令區別Python
- 01關於版本控制系統
- Git tag標籤與branch分支的區別Git
- 製造業ERP系統與MES的區別
- SAP與ERP管理系統的區別有哪些
- git 入門教程之版本控制Git
- 版本控制工具——Git常用操作(下)Git
- 版本控制工具——Git常用操作(上)Git
- Solaris系統與Linux系統常用命令的區別介紹Linux