兩張圖區分Git、GitHub的本質

兩張圖區分Git、GitHub的本質

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

1。什麼是 Git?

Git 是一個版本控制系統。

版本控制是一種用於記錄一個或多個檔案內容變化,方便我們查閱特定版本修訂情況的系統。

以前在沒有使用版本控制的時候,我們通常在我們的專案根目錄下這樣命名專案:

project_v1、project_v1。1、project_v2等等,透過這種方式記錄我們專案的不同版本的修改,

有的時候我們還會在不同版本的檔案中寫一個說明,記錄此版本專案新增、修改,刪除等操作。

這樣的操作是很繁雜的,有的時候還可能因為一些非人為因素導致檔案丟失這樣的事故。

有了版本控制系統,我們就不用再手動進行一些繁雜的操作,並且對於檔案丟失這種事故我們也不

用再擔心,你可以隨便回到歷史記錄的某個時刻。

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

的伺服器,儲存所有檔案的修訂版本,而協同合作的開發人員都透過客戶端連線到這臺伺服器,取出

最新的檔案或者提交更新。

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

兩張圖區分Git、GitHub的本質

而我們的主角 Git 是分散式版本控制系統。Git 已經成為越來越多開發者的青睞,因為分散式的優勢是很顯著的。

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

集中式版本控制系統,版本庫是集中存放在中央伺服器的,工作的時候,用的是自己的電腦,所以,我們首先需要

從中央伺服器上拉取最新的版本,然後開始工作,等工作完了,再把自己的工作提交到中央伺服器。在這裡借用廖

雪峰老師的一個比喻,中央伺服器好比是一個圖書館,你要改其中的一本書,必須先要從圖書館裡把書借出來,然

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

集中式版本控制系統的一個最大毛病就是必須聯網才能工作,所以對於網路環境比較差的情況使用集中式版本控制

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

分散式版本控制系統沒有中央伺服器的概念,我們使用相關的客戶端提取的不只是最新的檔案,而是把程式碼倉庫完整

地映象下來,相當於每個人的電腦都是一個完整的版本庫,這樣的話,任何一處協同工作的伺服器出現故障,都可以

用任何一個映象出來的本地倉庫恢復。並且,即便在網路環境比較差的情況下也不用擔心,因為版本庫就在本地電腦

上。

個人總結:

(1)。分散式版本控制系統下的本地倉庫包含程式碼庫還有歷史庫,在本地就可以檢視版本歷史

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

(3)。多人開發時,如果充當中央倉庫的Git倉庫掛掉了,任何一個開發者都可以隨時建立一個新的中央倉庫然後同步就可

以恢復中央倉庫

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

兩張圖區分Git、GitHub的本質

3。GitHub 和 GitLab 都是基於 web 的 Git 倉庫,使用起來二者差不多,它們都提供了分享開源專案的平臺,

為開發團隊提供了儲存、分享、釋出和合作開發專案的中心化雲端儲存的場所。

GitHub 作為開原始碼庫,擁有超過 900 萬的開發者使用者,目前仍然是最火的開源專案託管平臺,GitHub 同時

提供公共倉庫和私有倉庫,但如果使用私有倉庫,是需要付費的。

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

GitLab 讓開發團隊對他們的程式碼倉庫擁有更多的控制,相比較 GitHub , 它有不少特色:

(1) 允許免費設定倉庫許可權;

(2) 允許使用者選擇分享一個 project 的部分程式碼;

(3) 允許使用者設定 project 的獲取許可權,進一步提升安全性;

(4) 可以設定獲取到團隊整體的改進進度;

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

所以,從程式碼的私有性上來看,GitLab 是一個更好的選擇。但是對於開源專案而言,GitHub 依然是程式碼託管的首選。

原文連結:https://www。cnblogs。com/leeyongbard/p/9777498。html