Git、Github和GitLab的區別及與SVN的比較


個人理解:

  SVN適合領導啊,大家一起在加班,看你進度什么的,git則不必如此,忙完傳上來完活。

一、含義:

百度上這樣介紹的:

  Git(讀音為/gɪt/。)是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。 Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。

  GitHub是一個面向開源及私有軟件項目的托管平台,因為只支持git 作為唯一的版本庫格式進行托管,故名GitHub。

  GitLab 是一個用於倉庫管理系統的開源項目,使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。

二、詳解:

  Git是一個版本控制系統(Version Control System,VCS)。版本控制是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統。有了版本控制系統,就可以不用擔心文件丟失,不小心誤修改文件等等“事故”,而且你可以隨便回到歷史記錄的某個時刻。

  Github 和 Git 是兩回事。Git是版本控制系統,Github是在線的基於Git的代碼托管服務。GitHub是2008年由Ruby on Rails編寫而成。GitHub同時提供付費賬戶和免費賬戶。這兩種賬戶都可以創建公開的代碼倉庫,但是付費賬戶也可以創建私有的代碼倉庫。

  Github有個小缺陷 (也不能算是缺陷吧), 就是你的repo(repository的縮寫,表示“倉庫”)都需要public(公開), 如果你想要創建private(私人)的repo, 那得付錢。不過, 幸好, Gitlab解決了這個問題, 可以在上面創建免費的私人repo。GitHub和GitLab都是基於web的版本控制界面,服務於互聯網,Github可以直接注冊使用,Gitlab需要部署到服務器。

  GitLab創建的項目的默認屬性是Private(私人的),當然,你也可以選擇Public(公開的)或Internal(內部的)。

三、SVN含義:

  SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,相較於RCS、CVS,它采用了分支管理系統,它的設計目標就是取代CVS。互聯網上很多版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多個人共同開發同一個項目,共用資源的目的。 

四、Git與SVN比較:

  SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版本控制器!這是兩者之間最核心的區別。
  SVN只有一個單一的集中管理的服務器,保存所有文件的修訂版本,而協同工作的人們都通過客戶端連到這台服務器,取出最新的文件或者提交更新。
  Git每一個終端都是一個倉庫,客戶端並不只提取最新版本的文件快照,而是把原始的代碼倉庫完整地鏡像下來。每一次的提取操作,實際上都是一次對代碼倉庫的完整備份。

1、集中式版本控制系統:
  版本庫是集中存放在中央服務器的,而干活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務器。中央服務器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然后回到家自己改,改完了,再放回圖書館。

  集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鍾,這還不得把人給憋死啊。

2、分布式版本控制系統:

  首先,分布式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

  和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復制一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法干活了。

  在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個局域網內,兩台電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分布式版本控制系統通常也有一台充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。

3、簡單比較如下:

 Git優點:(一台電腦即可以是客戶端,也可以是服務器;工作過程中,可以斷網)

  適合分布式開發,強調個體;

  公共服務器壓力和數據量都不會太大;

  速度快,靈活;

  可以離線工作。

 SVN優點:(一台的服務器控制很多客戶端,使用過程中不能斷網)

  管理方便、邏輯明確;

  集中式管理更能保證安全性;

  適合開發人數不多的項目開發。

具體詳細比較,可以詳見:https://www.cnblogs.com/kevingrace/p/5904595.html(侵刪)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM