Git vs SVN
Linus一直痛恨的CVS及SVN都是集中式的版本控制系統,而Git是分散式版本控制系統,集中式和分散式版本控制系統有什麼區別呢?
先說集中式版本控制系統,版本庫是集中存放在中央伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從中央伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央伺服器。中央伺服器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。
集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在區域網內還好,頻寬夠大,速度夠快,可如果在網際網路上,遇到網速慢的話,可能提交一個10M的檔案就需要5分鐘,這還不得把人給憋死啊。
那分散式版本控制系統與集中式版本控制系統有何不同呢?首先,分散式版本控制系統根本沒有“中央伺服器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了檔案A,你的同事也在他的電腦上改了檔案A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
和集中式版本控制系統相比,分散式版本控制系統的安全性要高很多,因為每個人電腦裡都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裡複製一個就可以了。而集中式版本控制系統的中央伺服器要是出了問題,所有人都沒法幹活了。
在實際使用分散式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個區域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分散式版本控制系統通常也有一臺充當“中央伺服器”的電腦,但這個伺服器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。
當然,Git的優勢不單是不必聯網這麼簡單,後面我們還會看到Git極其強大的分支管理,把SVN等遠遠拋在了後面。
CVS作為最早的開源而且免費的集中式版本控制系統,直到現在還有不少人在用。由於CVS自身設計的問題,會造成提交檔案不完整,版本庫莫名其妙損壞的情況。同樣是開源而且免費的SVN修正了CVS的一些穩定性問題,是目前用得最多的集中式版本庫控制系統。
除了免費的外,還有收費的集中式版本控制系統,比如IBM的ClearCase(以前是Rational公司的,被IBM收購了),特點是安裝比Windows還大,執行比蝸牛還慢,能用ClearCase的一般是世界500強,他們有個共同的特點是財大氣粗,或者人傻錢多。
微軟自己也有一個集中式版本控制系統叫VSS,整合在Visual Studio中。由於其反人類的設計,連微軟自己都不好意思用了。
分散式版本控制系統除了Git以及促使Git誕生的BitKeeper外,還有類似Git的Mercurial和Bazaar等。這些分散式版本控制系統各有特點,但最快、最簡單也最流行的依然是Git!
相關文章
- svn 遷移到gitGit
- Git和SVN的對比Git
- git和SVN的區別?Git
- svn和git的區別Git
- svn和git版本管理優缺點Git
- git與svn的區別面試Git面試
- 02 SVN 與 Git 的優缺點Git
- 關於git 和 svn 的協調使用(主要用於方便在git 和 svn之間管理程式碼)Git
- 版本管理工具之Git 和SVNGit
- 『現學現忘』Git基礎 — 2、Git和SVN的區別Git
- 軟體測試:SVN與Git的差異Git
- 對比Git 與 SVN,這篇講的很易懂Git
- 如何從SVN遷移原始碼到Git倉庫原始碼Git
- 程式碼伺服器(SVN/GIT)防洩密(一)伺服器Git
- SVN/Git程式碼伺服器防洩密(二)Git伺服器
- PHP程式碼自動檢測(git/svn整合PHP_CodeSniffer)PHPGit
- 功能分支是邪惡的:從SVN遷移到Git經驗Git
- 修改VS Code的終端為Git BashGit
- 2018-09-11 Svn升級Git不需要那麼痛Git
- VS Code 提示 '未找到Git.請安裝Git,或在“git.path”設定中配置'Git
- svn
- git 如何 實現 svn那樣對某個檔案的許可權?Git
- svn和git提交時忽略不同平臺的換行符(unix-eol)Git
- SVN管理是什麼?SVN安裝教程,SVN可以做什麼
- IDEA svn專案 更換SVN地址Idea
- Git和Github的最佳VS Code外掛擴充套件Github套件
- Svn/Git程式碼伺服器防洩密的幾點安全價值分析Git伺服器
- SVN基本
- SVN用法
- svn部署
- 115 svn: URL 'svn://132.232.108.38/think' doesn't exist
- VS Code使用Git視覺化管理原始碼詳細教程Git視覺化原始碼
- SVN 建立版本庫 與 啟動 SVN 服務
- svn歷史版本刪除(為svn庫瘦身)
- svn基本操作
- SVN的使用
- svn access to forBiddenORB
- 為什麼網際網路巨頭們紛紛使用Git而放棄SVN?(內含Git核心命令與原理總結)Git
- SVN客戶端下載和SVN visual studio 外掛客戶端