Git是什么
概念
- Git(讀音為/gɪt/。)是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。
- SVN、CVS等,它們是集中式版本控制系統。
集中式和分布式版本控制系統的區別:
-
集中式版本控制系統:版本庫是集中存放在中央服務器的,工作的時候,用的是自己的電腦,所以,我們首先需要從中央服務器上拉取最新的版本,然后開始工作,等工作完了,再把自己的工作提交到中央服務器。在這里借用廖雪峰老師的一個比喻,中央服務器好比是一個圖書館,你要改其中的一本書,必須先要從圖書館里把書借出來,然后更改,改完之后,再放回圖書館。集中式版本控制系統的一個最大毛病就是必須聯網才能工作,所以對於網絡環境比較差的情況使用集中式版本控制系統是一件比較讓人頭疼的事情。
- 分布式版本控制系統:分布式版本控制系統沒有中央服務器的概念,我們使用相關的客戶端提取的不只是最新的文件,而是把代碼倉庫完整地鏡像下來,相當於每個人的電腦都是一個完整的版本庫,這樣的話,任何一處協同工作的服務器出現故障,都可以用任何一個鏡像出來的本地倉庫恢復。並且,即便在網絡環境比較差的情況下也不用擔心,因為版本庫就在本地電腦上。
集中式和分布式版本控制系統的總結:
- 分布式版本控制系統下的本地倉庫包含代碼庫還有歷史庫,在本地就可以查看版本歷史
- 而集中式版本控制系統下的歷史倉庫是存在於中央倉庫,每次對比與提交代碼都必須連接到中央倉庫
- 多人開發時,如果充當中央倉庫的Git倉庫掛掉了,任何一個開發者都可以隨時創建一個新的中央倉庫然后同步就可以恢復中央倉庫
從網上找了一張圖,展示一下它們的原理:
GitHub
GitHub是一個面向開源及私有軟件項目的托管平台,因為只支持git作為唯一的版本庫格式進行托管,故名GitHub。
GitHub於2008年4月10日正式上線,除了Git代碼倉庫托管及基本的 Web管理界面以外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協作圖譜(報表)、代碼片段分享(Gist)等功能。目前,其注冊用戶已經超過350萬,托管版本數量也是非常之多,其中不乏知名開源項目Spring、MyBatis、React、Vue等。
GitLab
GitLab 是一個用於倉庫管理系統的開源項目,使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。安裝方法是參考GitLab在GitHub上的Wiki頁面。
GitLab是由GitLabInc.開發,使用MIT許可證的基於網絡的Git倉庫管理工具,且具有wiki和issue跟蹤功能。使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。
Git,GitHub與GitLab的區別
GitHub 和 GitLab 都是基於 web 的 Git 倉庫,使用起來二者差不多,它們都提供了分享開源項目的平台,為開發團隊提供了存儲、分享、發布和合作開發項目的中心化雲存儲的場所。
- Git是一種版本控制系統,是一種工具,用於代碼的存儲和版本控制。
- GitHub是一個基於Git實現的在線開源代碼倉庫,擁有超過 900 萬的開發者用戶,目前仍然是最火的開源項目托管平台,GitHub 同時提供公共倉庫和私有倉庫,但如果使用私有倉庫,是需要付費的。
- GitLab是一個基於Git實現的在線代碼倉庫軟件,你可以用GitLab自己搭建一個類似於GitHub一樣的倉庫,但是GitLab有完善的管理界面和權限控制,一般用於在企業、學校等內部網絡搭建Git私服。允許免費設置倉庫權限;允許用戶選擇分享一個 project 的部分代碼;允許用戶設置 project 的獲取權限,進一步提升安全性;可以設置獲取到團隊整體的改進進度;通過 innersourcing 讓不在權限范圍內的人訪問不到該資源;
- GitHub和GiLlab兩個都是基於Web的Git遠程倉庫,它們都提供了分享開源項目的平台,為開發團隊提供了存儲、分享、發布和合作開發項目的中心化雲存儲的場所。從代碼的私有性上來看,GitLab 是一個更好的選擇。但是對於開源項目而言,GitHub 依然是代碼托管的首選。