【CSDN 編者按】開發(fā)人員在開發(fā)編程項目時可能會面臨這樣一個問題,GitHub和GitLab各有優(yōu)缺點(diǎn),用哪一個更好呢?那么今天我們就來簡單介紹一下GitHub和GitLab并談?wù)勊鼈兏髯缘膬?yōu)勢和短板。
整理 | 郭露
出品 | CSDN(ID:CSDNnews)
您真的需要用到分布式版本控制系統(tǒng)嗎?
VCS又名源代碼管理(SCM)系統(tǒng),旨在讓開發(fā)人員、設(shè)計人員同時開發(fā)一個項目。它能夠確保每個人都可以訪問最新代碼,并同步自己的修改。
然而,這說起來容易做起來難。
為了實現(xiàn)這一點(diǎn),linux之父Linus Torvalds發(fā)明了免費(fèi)的開源分布式版本控制系統(tǒng)Git。Git的表現(xiàn)要比Apache Subversion、并發(fā)版本系統(tǒng)(CVS)、Perforce和Rational ClearCase要出色的多,因此之后大多數(shù)VCS服務(wù)的名稱中都包含了“Git”。
如果開發(fā)人員在內(nèi)部構(gòu)建程序,那么只需用到本地Git。Git甚至還可以個人服務(wù)器或云上的集中式VCS,開發(fā)人員可以與世界各地的伙伴一起開發(fā)項目。
但是,如果開發(fā)人員的需求增加,那么使用GitHub或是GitLab也是不錯的選擇。
圖源自ICphoto
GitHub是基于Git的在線代碼倉庫,也是全球最大的代碼托管平臺,開發(fā)人員可以在GitHhub上進(jìn)行交流和學(xué)習(xí)。2008年2月,Chris Wanstrath、PJ Hyett、Tom Preston-Werner和Scott Chacon使用Ruby on Rails開發(fā)GitHub。由于它是最早的分布式版本控制系統(tǒng),GitHub之后發(fā)展成為大多數(shù)開源代碼的存儲庫。截至2021年11月,GitHub擁有超過7300萬開發(fā)人員以及超過2億個存儲庫,其中至少有2800萬個公共存儲庫。
2011年烏克蘭開發(fā)人Dmitriy Zaporozhets和荷蘭開發(fā)人員Sytse Sijbrandij開發(fā)了GitLab,它擁有在單個應(yīng)用程序中開發(fā)、保護(hù)和操作軟件的能力。GitLab約有3000萬用戶,其中有100萬活躍用戶。
GitLab最初用Ruby編寫,之后又用Go重寫了部分內(nèi)容。最初,它作為源代碼管理平臺,用于在軟件開發(fā)團(tuán)隊內(nèi)進(jìn)行協(xié)作,后來發(fā)展為涉及軟件開發(fā)生命周期甚至是整個DevOps生命周期的平臺。現(xiàn)階段GitLab使用的軟件技術(shù)包括Go、Ruby on Rails以及Vue.js。
GitHub VS. GitLab
在某種程度上,GitHub和GitLab非常相似。兩者都在Linux上運(yùn)行,并且都帶有問題跟蹤器,提供大量第三方集成和導(dǎo)入工具。
它們還為提供了命令行界面(CLI)以及基于Web的界面。在GitLab中,用戶界面采用Vue.js編寫,用的是自己的設(shè)計系統(tǒng)。而GitHub的用戶界面Desktop可作為windows或macOS程序使用。同時開發(fā)人員還可以將Visual Studio與GitHub一起使用。
雖然兩者都支持開源,但存儲庫使用的是不同的編程模型。GitLab使用的是開放核心業(yè)務(wù)方法,社區(qū)版保持免費(fèi)和開源,而企業(yè)版有更多的功能。而對于GitHub來說,盡管它的代碼涉及許多開源代碼,但它不是開源項目。
不過兩者都提供基于Web的存儲庫,可以進(jìn)行開源且基于Git的代碼管理,并支持遠(yuǎn)程存儲庫的本地文件更改。不管是只需要Git的基礎(chǔ)功能,還是需要開放所有功能,GitHub和GitLab都是可以更改的。
除此之外,由于2018年10月26日GitHub被微軟以75億美元收購,許多人選擇放棄GitHub。對于一部分人來說,就算微軟支持開發(fā)開源軟件,微軟也永遠(yuǎn)是個“反派”。但現(xiàn)實就是放棄GitHub并選擇GitLab的人并不多。
GitHub如今成為VCS領(lǐng)域中的巨頭。根據(jù)編程工具公司JetBrains的數(shù)據(jù),有77%的開發(fā)人員使用GitHub,而使用GitLab的為40%,使用BitBucket的為25%。
造成這一局面的主要原因在GitLab內(nèi)置了持續(xù)集成/持續(xù)交付(CI/CD)以及DevOps流程。而GitHub則是由開發(fā)人員選擇CI/CD工具并進(jìn)行集成。一般來說,GitHub用戶會選擇第三方CI程序,例如Jenkins、CircleCI或TravisCI。
另一個區(qū)別在于GitHub看重速度,而GitLab看重安全性。
GitHub還支持將新分支與主分支合并。這樣,用戶就可以進(jìn)行快速部署,出現(xiàn)問題還可以恢復(fù)到上一個版本。
在GitLab中,用戶可以在master分支外創(chuàng)建多個穩(wěn)定的分支,但這意味著用戶需要進(jìn)行多次的測試,合并時需要進(jìn)行多次代碼審查。
但是GitLab提供了完整的軟件開發(fā)解決方案,這是一個完整的DevOps平臺。GitLab可以與許多第三方程序和平臺集成,其中包括Jira、Microsoft Teams、Slack、Gmail等等。
另一方面,GitHub提供的服務(wù)較少,但有許多與外部程序和服務(wù)集成的方法,開發(fā)人員可以通過GitHub Marketplace集成數(shù)百個其他程序。
對于個人或是小型團(tuán)隊而言,GitHub和GitLab都提供免費(fèi)版本,其中含有無限的公共庫和私人庫。但是如果是大型互聯(lián)網(wǎng)公司的話,免費(fèi)版本的功能顯然是不夠的,公司可以針對不同的需求而進(jìn)行選擇。兩者均為基于Web的Git倉庫,可以允許開發(fā)人員進(jìn)行儲存、分享、發(fā)布和合作開發(fā)項目。
若是更看重代碼的安全性,GitLab無疑是更好的選擇;但是若是開源項目,GitHub仍然是首選。
【參考資料】
https://www.jetbrains.com/lp/devecosystem-2020/team-tools/
https://www.z.NET.com/article/microsoft-finalizes-its-7-5-billion-github-acquisition/
https://www.zdnet.com/article/the-key-differences-between-github-and-gitlab/
— END—