Git、GitHub、GitLab三者之間的聯繫以及區別

在講區別以及聯繫以前先簡要的介紹一下,這三者都是什麼(本篇文章適合剛入門的新手,大佬請出門左轉)web

1.什麼是 Git?安全

Git 是一個版本控制系統。服務器

版本控制是一種用於記錄一個或多個文件內容變化,方便咱們查閱特定版本修訂狀況的系統。網絡

之前在沒有使用版本控制的時候,咱們一般在咱們的項目根目錄下這樣命名項目:分佈式

project_v一、project_v1.一、project_v2等等,經過這種方式記錄咱們項目的不一樣版本的修改,版本控制

有的時候咱們還會在不一樣版本的文件中寫一個說明,記錄此版本項目新增、修改,刪除等操做。blog

這樣的操做是很繁雜的,有的時候還可能由於一些非人爲因素致使文件丟失這樣的事故。ci

有了版本控制系統,咱們就不用再手動進行一些繁雜的操做,而且對於文件丟失這種事故咱們也不資源

用再擔憂,你能夠隨便回到歷史記錄的某個時刻。開發

 

早期出現的版本控制系統有:SVN、CVS等,它們是集中式版本控制系統,都有一個單一的集中管理

的服務器,保存全部文件的修訂版本,而協同合做的開發人員都經過客戶端鏈接到這臺服務器,取出

最新的文件或者提交更新。

從網上找了一張圖,展現一下它們的原理:

而咱們的主角 Git 是分佈式版本控制系統。Git 已經成爲愈來愈多開發者的青睞,由於分佈式的優點是很顯著的。

 

2.說一下集中式和分佈式版本控制系統的區別:

集中式版本控制系統,版本庫是集中存放在中央服務器的,工做的時候,用的是本身的電腦,因此,咱們首先須要

從中央服務器上拉取最新的版本,而後開始工做,等工做完了,再把本身的工做提交到中央服務器。在這裏借用廖

雪峯老師的一個比喻,中央服務器比如是一個圖書館,你要改其中的一本書,必須先要從圖書館裏把書借出來,然

後更改,改完以後,再放回圖書館。

集中式版本控制系統的一個最大毛病就是必須聯網才能工做,因此對於網絡環境比較差的狀況使用集中式版本控制

系統是一件比較讓人頭疼的事情。

 

分佈式版本控制系統沒有中央服務器的概念,咱們使用相關的客戶端提取的不僅是最新的文件,而是把代碼倉庫完整

地鏡像下來,至關於每一個人的電腦都是一個完整的版本庫,這樣的話,任何一處協同工做的服務器出現故障,均可以

用任何一個鏡像出來的本地倉庫恢復。而且,即使在網絡環境比較差的狀況下也不用擔憂,由於版本庫就在本地電腦

上。

 

我的總結:

(1).分佈式版本控制系統下的本地倉庫包含代碼庫還有歷史庫,在本地就能夠查看版本歷史

(2).而集中式版本控制系統下的歷史倉庫是存在於中央倉庫,每次對比與提交代碼都必須鏈接到中央倉庫

(3).多人開發時,若是充當中央倉庫的Git倉庫掛掉了,任何一個開發者均可以隨時建立一個新的中央倉庫而後同步就可

以恢復中央倉庫

從網上找了一張圖,展現一下它們的原理:

 

3.GitHub 和  GitLab 都是基於 web 的 Git 倉庫,使用起來兩者差很少,它們都提供了分享開源項目的平臺,

爲開發團隊提供了存儲、分享、發佈和合做開發項目的中心化雲存儲的場所。

GitHub 做爲開源代碼庫,擁有超過 900 萬的開發者用戶,目前仍然是最火的開源項目託管平臺,GitHub 同時

提供公共倉庫和私有倉庫,但若是使用私有倉庫,是須要付費的。

 

GitLab 解決了這個問題,你能夠在上面建立私人的免費倉庫。

 

GitLab 讓開發團隊對他們的代碼倉庫擁有更多的控制,相比較 GitHub , 它有很多特點:

(1) 容許免費設置倉庫權限;

(2) 容許用戶選擇分享一個 project 的部分代碼;

(3) 容許用戶設置 project 的獲取權限,進一步提高安全性;

(4) 能夠設置獲取到團隊總體的改進進度;

(5) 經過 innersourcing 讓不在權限範圍內的人訪問不到該資源;

 

因此,從代碼的私有性上來看,GitLab 是一個更好的選擇。可是對於開源項目而言,GitHub 依然是代碼託管的首選。

相關文章
相關標籤/搜索