GitHub與GitLab有何不同,您該選那個?
譯文很多人問我:“我的編程項目應(yīng)使用哪個分布式版本控制系統(tǒng)?GitHub還是GitLab?”這個問題不好回答。
首先,您真需要分布式版本控制系統(tǒng)(VCS)嗎?VCS又叫源代碼管理(SCM)系統(tǒng),旨在讓多個開發(fā)人員、設(shè)計人員和團隊成員輕松地處理同一項目。它確保每個人可以訪問同樣的最新代碼,并跟蹤修改。
說起來容易做起來難。
這就是為什么Linus Torvalds將Git視為他的另一項偉大發(fā)明。Git免費、開源且快速。比之前的系統(tǒng)更勝一籌,比如Apache Subversion、并發(fā)版本系統(tǒng)(CVS)、Perforce和Rational ClearCase。這么多VCS服務(wù)的名稱中含有“Git”是有道理的。
當(dāng)然,您可以在自己的服務(wù)器上單獨使用 Git。如果只是在內(nèi)部開發(fā)程序,只需要本地Git實例。您還可以將Git用作自己的服務(wù)器上或云上的集中式VCS。如果可以自行構(gòu)建VCS服務(wù),無需訂閱。使用該模式,您可以與遍布世界各地的團隊和合作伙伴輕松地開發(fā)項目。
然而,如果您確實需要托管Git服務(wù)的額外功能,可以關(guān)注一下GitHub和GitLab。
GitHub是最古老的服務(wù)。它由Chris Wanstrath、P. J. Hyett、Tom Preston-Werner和Scott Chacon在2008年2月使用Ruby on Rails開發(fā)而成。由于先發(fā)優(yōu)勢,GitHub成了許多開源代碼存儲庫的大本營。
后來出現(xiàn)了GitLab;烏克蘭開發(fā)人員Dmitriy Zaporozhets和Valery Sizov于2011年創(chuàng)建了GitLab。一開始,GitLab就被設(shè)計成了代碼存儲庫服務(wù)和一組協(xié)作工具。
相似之處
這兩者頗為相似。兩者都在Linux服務(wù)器上運行,都隨帶問題單跟蹤器,都提供廣泛的第三方集成和導(dǎo)入工具。
它們還都為高級開發(fā)人員提供命令行界面(CLI),為新手程序員提供基于Web的界面。拿GitLab來說,用戶界面使用GitLab自己的Pajamas設(shè)計系統(tǒng)(用Vue.js編寫)。GitHub的用戶界面Desktop可作為Windows或macOS程序來使用。您現(xiàn)在還可以將Visual Studio與GitHub一起使用。
雖然兩者都支持開源,但存儲庫本身使用混合編程模式。GitLab使用開放核心業(yè)務(wù)方法。在此模式中,GitLab社區(qū)版保持免費開源,而GitLab企業(yè)版擁有更多功能并提供支持。至于GitHub,雖然其代碼含有一些開源代碼,但它不是一個開源項目。
不過從根本上說,兩者都提供基于Web的存儲庫(附有基于Git的開源代碼管理)和遠程存儲庫的本地文件更改。如果您只想要基本的Git功能,別人負(fù)責(zé)確保Git正常運行,這兩種服務(wù)都適合你。
當(dāng)然,有些人仍不喜歡GitHub,因為微軟在2018年收購了它。對一些人來說,微軟永遠是邪惡帝國,無論微軟如何表明它現(xiàn)在支持開源方法和軟件,或者無論微軟首席執(zhí)行官Satya Nadella怎么說他喜歡Linux。話雖如此,這從來不是一個很大的因素。雖然當(dāng)時一些用戶確實離開GitHub、轉(zhuǎn)投GitLab和Atlassian BitBucket,但不像一些人預(yù)期的那樣大批用戶外流。
GitHub顯然是VCS界的巨頭。據(jù)編程工具公司JetBrains聲稱,77%的開發(fā)人員常使用GitHub,而只有40%的開發(fā)人員常使用GitLab、僅25%的開發(fā)人員常使用BitBucket。
差異之處
主要區(qū)別在于,GitLab內(nèi)置了持續(xù)集成/持續(xù)交付(CI/CD)和DevOps工作流程。GitHub讓您可以使用自己選擇的CI/CD工具,但需要自行集成。GitHub用戶通常使用第三方CI程序,比如Jenkins、CircleCI或TravisCI。
另一個重要區(qū)別是,GitHub注重速度,而GitLab注重可靠性。具體來說,GitHub倡導(dǎo)將新分支與主分支合并。這樣一來,您已經(jīng)準(zhǔn)備好了快速部署;萬一出了岔子,又可以迅速修復(fù)舊版本。
在GitLab的工作流程中,您創(chuàng)建主分支之外的多個穩(wěn)定分支。起碼您會有生產(chǎn)級和預(yù)生產(chǎn)級穩(wěn)定分支。這意味著要有多步驟測試過程。一接到合并請求只審查一次代碼是不夠的。
另一大區(qū)別是,GitLab提供了完整的軟件開發(fā)解決方案。它自稱是完整的DevOps平臺不無道理。話雖如此,GitLab確實提供與一些第三方程序和平臺的集成,比如Jira、Microsoft Teams、Slack、Gmail及其他許多應(yīng)用程序和平臺。
另一方面,GitHub在其自己的程序內(nèi)提供的服務(wù)較少,但提供了與許多外部程序和服務(wù)集成的方法。這包括GitHub竭力與該服務(wù)集成的軟件和通過GitHub Marketplace可享用的其他數(shù)百個程序。
價格
兩種服務(wù)都提供免費方案,隨帶無限的公共和私有存儲庫。如果您是個人程序員或有支小團隊,應(yīng)該足以滿足需要。但是如果貴公司靠編程吃飯,就需要更高級的解決方案。
GitHub和GitLab的價格很難比較。建議從它們的免費方案入手,了解自己的工作流程在每個平臺上如何運行,然后考慮訂閱最適合自己的那種方案。
訂閱費應(yīng)該是您最不關(guān)心的問題。我用過這兩種服務(wù),就我的小規(guī)模編程而言,它們用起來都極好。
GitLab的Premium方案是每個用戶每月收費19美元,而功能齊全的Ultimate方案每月收費99美元。至于GitHub,Team方案是每個用戶每年40美元,而Enterprise方案是每個用戶每年200美元。不過您可能會發(fā)現(xiàn)無論最終訂閱哪種服務(wù),都需要支付額外費用。
別讓價格成為指導(dǎo)因素。真正重要的是,哪一個會為您提供開發(fā)軟件所需的工具和服務(wù)。
原文標(biāo)題:??GitHub vs GitLab: The key differences??,作者:Steven Vaughan-Nichols