1. 程式人生 > >Git與svn的異同及各自的優缺點

Git與svn的異同及各自的優缺點

相同:
能記錄檔案的所有更改記錄。這樣是為了大量更改後,但是最後覺得還是原來的版本程式碼好,可以有記錄回到過去,而不用採用 Copy 舊程式碼另存為某檔案,然後某個時間從大量檔案中找你需要的歷史記錄,版本控制幫我們做到了歷史記錄的儲存,可以方便地查詢及回滾到過去的某一版本。
不同:
git和其他版本控制系統(如 CVS)有不少的差別,git本身關心檔案的整體性是否有改變,但多數的 CV S或 Subversion 系統則在乎檔案內容的差異。因此git更像一個檔案系統,直接在本機上獲取資料,不必連線到主機端獲取資料。

git 是用於Linux核心開發的版本控制工具。與CVS、Subversion(SVN) 一類的集中式版本控制工具不同,它採用了分散式版本庫的作法,不需要伺服器端軟體,就可以運作版本控制,使得原始碼的釋出和交流極其方便。git的速度很快,這對於諸如Linux核心這樣的大專案來說自然很重要。git最為出色的是它的合併追蹤(merge tracing)能力。
SVN 是集中式或者有中心式版本控制系統,版本庫是集中放在中央伺服器的,而幹活的時候,用的都是自己的電腦,所以首先要從中央伺服器哪裡得到最新的版本,然後幹活,幹完後,需要把自己做完的活推送到中央伺服器。集中式版本控制系統是必須聯網才能工作,如果在區域網還可以,頻寬夠大,速度夠快,如果在網際網路下,如果網速慢的話,就納悶了。
Git 是分散式版本控制系統,那麼它就沒有中央伺服器的,每個人的電腦就是一個完整的版本庫,這樣,工作的時候就不需要聯網了,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協作呢?比如說自己在電腦上改了檔案A,其他人也在電腦上改了檔案A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
Git優點:
1、分散式,每個參與開發的人的電腦上都有一個完整的倉庫,不擔心硬碟出問題;
2、在不聯網的情況下,照樣可以提交到本地倉庫,可以檢視以往的所有log,等到有網的時候,push到遠端即可;
3、非常強大的分支管理功能。
4、Git的內容的完整性要優於SVN: GIT的內容儲存使用的是SHA-1雜湊演算法。這能確保程式碼內容的完整性,確保在遇到磁碟故障和網路問題時降低對版本庫的破壞。

Git缺點:
許可權管理不是很方便,需要安裝外掛gitolite,配置有點麻煩,或者直接使用gitlab管理。

SVN優點
1、較好的許可權管理功能,可以精確控制每個目錄的許可權;
2、使用相對git要簡單一點。

SVN缺點
1、集中式,如果中心伺服器出現問題,所有人都不能正常幹活,恢復也很麻煩,因為SVN記錄的是每次改動的差異,不是完整檔案;
2、分支功能沒有git強大;
3、速度沒有git快,如果有五個分支,是把五個分支的檔案全部拷下來;
4、必須聯網才能commit。
原文:https://blog.csdn.net/wenniuwuren/article/details/51924366


原文:https://blog.csdn.net/zhezhebie/article/details/82563568