轉(zhuǎn)載:https://blog.csdn.net/hymking/article/details/53621908
1.git
git官網(wǎng)https://git-scm.com/ 官網(wǎng)上是這么介紹的:
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
git是一個開源的分布式版本控制系統(tǒng),用以快速高效的處理項目從很小到非常大的項目的版本控制的所有事情蹦渣。 另外官網(wǎng)上的介紹還有,git性能卓越,超過甚至顛覆一些其他的產(chǎn)品如cvs,perfamce等,git有非常方便的本地分支,多個工作流等。 2.git和svn的比較
git和svn是目前最常用的團隊協(xié)作的版本控制系統(tǒng)貌亭。下面我們從版本控制系統(tǒng)的
以下的1,2,3也正是版本控制的演進歷史:
①本地版本控制系統(tǒng):(解決個人的版本管理)
很多人的選擇的版本控制方法是將文件復(fù)制到另一個目錄(可能是一個時間標記的目錄,如果他們是聰明)柬唯。這種做法是很常見的,因為它是如此簡單,但是很容易出錯,比如很容易忘了你是哪個目錄,不小心寫了錯誤的文件等等。 為了解決這個問題,程序員早就開發(fā)了VCSS具有該保留所有文件的更改版本控制下的一個簡單的數(shù)據(jù)庫圃庭。
但是這種版本控制會丟失锄奢。畢竟是本地的。
②集中式版本控制:(svn是這種形式)
人們遇到的下一個主要問題是,他們需要與其他系統(tǒng)上的開發(fā)者合作剧腻。為了解決這個問題,出現(xiàn)了集中式版本控制系統(tǒng)(CVCSs)的開發(fā)工作拘央。集中式版本控制系統(tǒng),如CVS,Subversion和Perforce的,有一個包含所有版本文件的單個服務(wù)器和一個數(shù)字(版本號),眾多客戶端從這個server上去檢出文件(只是文件,本地沒有倉庫的概念)。 多年以來,這已經(jīng)成為版本控制的標準书在。
但是集中式的版本控制灰伟,有個嚴重的缺陷。就是中央服務(wù)器的單點故障儒旬。如果服務(wù)宕機一個小時栏账,在這期間,沒有任何人可以在正在工作的版本上很好的合作或者去保存某一個版本的改變栈源。另外如果中央數(shù)據(jù)庫的磁盤壞了挡爵,并且可能沒有保存?zhèn)浞荩敲磳G失所有的東西甚垦。你失去了絕對一切 - 除了單一的任何人的快照恰好有在本地計算機上項目的整個歷史茶鹃。當然本地的版本控制系統(tǒng)也有相同的問題。雖然制轰,你能夠把每個人的本地代碼前计,進行合并得到一個相對完整的版本,但是當你把這個相對完整的版本重新部署到服務(wù)器的新倉庫時垃杖,將會丟失所有的歷史版本包括日志男杈。
③分布式版本控制:(git是這種形式,GIT跟SVN一樣有自己的集中式版本庫或服務(wù)器)
這是在分布式版本控制系統(tǒng)(DVCSs)步在DVCS(如GIT中)调俘,客戶端不只是檢查出文件的最新快照:他們完全鏡像的存儲庫(本地有倉庫伶棒,這就是分布式的意義)。因此彩库,如果出現(xiàn)上述問題肤无,任何客戶機庫的可復(fù)制備份到服務(wù)器,以恢復(fù)它骇钦。每一個克隆確實是所有數(shù)據(jù)的完整備份(除了沒有push的代碼宛渐,這個也是理所當然的)。
那么針對于本地版本控制系統(tǒng),和集中式版本控制系統(tǒng)的最嚴重的缺陷窥翩,就被分布式版本控制系統(tǒng)解決了业岁。
另外類似git這樣的分布式版本管理系統(tǒng),能更好的去處理你在多個遠程倉庫上的工作。這樣是你可以同時去和多個團隊去寫作開發(fā)寇蚊。這允許您設(shè)置幾種類型的工作流,這些集中式版本控制系統(tǒng)是做不到的笔时。比如說分層模型。
對比結(jié)果:
1.git是分布式的scm,svn是集中式的仗岸。(最核心)
2.git是每個歷史版本都存儲完整的文件,便于恢復(fù),svn是存儲差異文件,歷史版本不可恢復(fù)允耿。(核心)
3.git可離線完成大部分操作,svn則不能。
4.git有著更優(yōu)雅的分支和合并實現(xiàn)扒怖。
5.git有著更強的撤銷修改和修改歷史版本的能力
6.git速度更快,效率更高较锡。
基于以上區(qū)別,git有了很明顯的優(yōu)勢,特別在于它具有的本地倉庫。