1. 程式人生 > >svn和git的區別,為什麼使用git?

svn和git的區別,為什麼使用git?

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.

1.git
git官網https://git-scm.com/ 官網上是這麼介紹的:
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是一個開源的分散式版本控制系統,用以快速高效的處理專案從很小到非常大的專案的版本控制的所有事情


另外官網上的介紹還有,git效能卓越,超過甚至顛覆一些其他的產品如cvs,perfamce等,git有非常方便的本地分支,多個工作流等

2.git和svn的比較
git和svn是目前最常用的團隊協作的版本控制系統
下面我們從版本控制系統的
以下的1,2,3也正是版本控制的演進歷史:
①本地版本控制系統:(解決個人的版本管理)
很多人的選擇的版本控制方法是將檔案複製到另一個目錄(可能是一個時間標記的目錄,如果他們是聰明)
這種做法是很常見的,因為它是如此簡單,但是很容易出錯,比如很容易忘了你是哪個目錄,不小心寫了錯誤的檔案等等
為了解決這個問題,程式設計師早就開發了VCSS具有該保留所有檔案的更改版本控制下的一個簡單的資料庫

但是這種版本控制會丟失畢竟是本地的

②集中式版本控制:(svn是這種形式)

人們遇到的下一個主要問題是,他們需要與其他系統上的開發者合作為了解決這個問題,出現了集中式版本控制系統(CVCSs)的開發工作集中式版本控制系統,如CVS,Subversion和Perforce的,有一個包含所有版本檔案的單個伺服器和一個數字(版本號),眾多客戶端從這個server上去檢出檔案(只是檔案,本地沒有倉庫的概念) 多年以來,這已經成為版本控制的標準


但是集中式的版本控制,有個嚴重的缺陷。就是中央伺服器的單點故障。如果服務宕機一個小時,在這期間,沒有任何人可以在正在工作的版本上很好的合作或者去儲存某一個版本的改變。另外如果中央資料庫的磁碟壞了,並且可能沒有儲存備份,那麼將丟失所有的東西。你失去了絕對一切 - 除了單一的任何人的快照恰好有在本地計算機上專案的整個歷史。當然本地的版本控制系統也有相同的問題。雖然,你能夠把每個人的原生代碼,進行合併得到一個相對完整的版本,但是當你把這個相對完整的版本重新部署到伺服器的新倉庫時,將會丟失所有的歷史版本包括日誌。

③分散式版本控制:(git是這種形式,GIT跟SVN一樣有自己的集中式版本庫或伺服器)

這是在分散式版本控制系統(DVCSs)步在DVCS(如GIT中),客戶端不只是檢查出檔案的最新快照:他們完全映象的儲存庫(本地有倉庫,這就是分散式的意義)。因此,如果出現上述問題,任何客戶機庫的可複製備份到伺服器,以恢復它。每一個克隆確實是所有資料的完整備份(除了沒有push的程式碼,這個也是理所當然的)。

那麼針對於本地版本控制系統,和集中式版本控制系統的最嚴重的缺陷,就被分散式版本控制系統解決了。


另外類似git這樣的分散式版本管理系統,能更好的去處理你在多個遠端倉庫上的工作這樣是你可以同時去和多個團隊去寫作開發這允許您設定幾種型別的工作流,這些集中式版本控制系統是做不到的比如說分層模型

對比結果:

1.git是分散式的scm,svn是集中式的(最核心)

2.git是每個歷史版本都儲存完整的檔案,便於恢復,svn是儲存差異檔案,歷史版本不可恢復(核心)

3.git可離線完成大部分操作,svn則不能

4.git有著更優雅的分支和合並實現

5.git有著更強的撤銷修改和修改歷史版本的能力

6.git速度更快,效率更高

基於以上區別,git有了很明顯的優勢,特別在於它具有的本地倉庫

實時獲得部落格更新,請二維碼進行關注