10月份開始GitHub把master換成main:這是開發(fā)者需要知道的幾點(diǎn)
譯文【51CTO.com快譯】另一項(xiàng)服務(wù)正從其技術(shù)剔除引起分歧的“master”術(shù)語。這回主角是GitHub,新的術(shù)語將由“master”改為“main”。這一變化的原因應(yīng)該很明顯,但此舉是為了使這家公司擺脫任何提及奴隸制的印象,換成不會(huì)有誤解的包容性術(shù)語。
技術(shù)界早該進(jìn)行這種變化了,但至少終于有了實(shí)際行動(dòng)。從2020年10月1日開始,所有“master分支”一律改名為“main分支”。
對(duì)于接觸Git和GitHub已有多年的開發(fā)者來說,這個(gè)變化將需要一段時(shí)間來適應(yīng)。即使您知道變化是正確的做法,多年來手指還是習(xí)慣輸入git checkout master?,F(xiàn)在,您要改為git checkout main。
我預(yù)計(jì)其他許多技術(shù)會(huì)仿而效之,所以開發(fā)者很可能會(huì)在某個(gè)時(shí)候?qū)λ麄兪褂玫脑S多工具進(jìn)行類似的改變。但是GitHub不同。GitHub被數(shù)百萬開發(fā)者使用,其中一些人單槍匹馬,但許多人一起工作。這意味著變化將是全球性的、涵蓋整個(gè)項(xiàng)目的。
開發(fā)者需要對(duì)GitHub的這一變化知道什么?
除了術(shù)語上的變化外,這還會(huì)如何直接影響您?不妨看一下。
首先,GitHub已經(jīng)進(jìn)行了以下變化:
- 含有已刪除的分支名稱“master”的GitHub.com鏈接已經(jīng)重定向至“main”。
- GitHub頁面已更新,可以從任何分支加以部署。
- GitHub添加了用戶、組織和企業(yè)設(shè)置,以便開發(fā)者可以為所有新創(chuàng)建的存儲(chǔ)庫設(shè)置默認(rèn)分支名稱。
2020年10月1日,新創(chuàng)建的存儲(chǔ)庫將默認(rèn)為“main”。現(xiàn)有存儲(chǔ)庫會(huì)有與目前同樣的默認(rèn)分支,這一變化不會(huì)影響現(xiàn)有的存儲(chǔ)庫。用戶、組織和企業(yè)可以在以下位置選擇退出該變化:
- 用戶:https://github.com/settings/repositories
- 組織所有者:https://github.com/organizations/YOUR-ORGANIZATION/settings/repository-defaults
- 企業(yè)管理員:https://github.com/enterprises/YOUR-ENTERPRISE/settings/member_privileges
到今年年底,所有現(xiàn)有存儲(chǔ)庫都將換成新的命名約定。這帶來了一系列特殊的挑戰(zhàn),包括:
- 打開的合并請(qǐng)求定向到新命名的分支;
- 草稿版本必須定向到新命名的分支;以及
- 分支保護(hù)策略必須轉(zhuǎn)移到新命名的分支。
GitHub的目的是確保到今年年底,所有存儲(chǔ)庫能夠無縫地重命名默認(rèn)分支。這意味著當(dāng)您重命名分支時(shí),GitHub將自動(dòng)重定向打開的合并請(qǐng)求和草稿版本,并遷移分支保護(hù)策略。GitHub還希望能夠重定向使用git fetch或git clone的用戶,將舊的分支名稱改為新的分支名稱。
您可能認(rèn)為所有這些變化應(yīng)該輕而易舉,但是鑒于GitHub有4000多萬用戶、1億多個(gè)存儲(chǔ)庫以及至少2800萬個(gè)公共存儲(chǔ)庫,這是項(xiàng)艱巨的任務(wù)。一個(gè)規(guī)劃不當(dāng)?shù)呐e動(dòng)會(huì)導(dǎo)致Linux內(nèi)核之類的項(xiàng)目發(fā)覺其代碼無法訪問。鑒于全球大批企業(yè)依賴Linux內(nèi)核,因此這類事件可能是災(zāi)難性的,因此GitHub做好這項(xiàng)工作至關(guān)重要。
如何將GitHub項(xiàng)目的默認(rèn)分支從master遷移到main?
在GitHub做份內(nèi)事的同時(shí),您可以采取的最重要步驟是將您所有項(xiàng)目的默認(rèn)分支由“master”遷移到“main”。不然,您將依賴GitHub創(chuàng)建的工具來自動(dòng)完成這項(xiàng)工作。我會(huì)很籠統(tǒng)地介紹要采取的步驟。
在執(zhí)行任何操作之前,備份您的所有工作——您不希望因分支重命名而丟失數(shù)據(jù)。
使用以下命令將master分支移到main:
- git branch -m master main
使用以下命令將新命名的main分支推送到GitHub(假設(shè)這是您的遠(yuǎn)程存儲(chǔ)庫):
- git push -u origin main
使用以下命令將HEAD指向main:
- git symbolic-ref refs / remotes / origin / HEAD refs / remotes / origin / main
現(xiàn)在,您需要將“main”設(shè)置為GitHub上您項(xiàng)目的默認(rèn)分支。為此,登錄進(jìn)入到您的GitHub帳戶,打開項(xiàng)目的存儲(chǔ)庫,點(diǎn)擊“設(shè)置” |“分支”。在左側(cè)邊欄中,點(diǎn)擊“分支”,然后從下拉列表中選擇“Main”作為默認(rèn)值。點(diǎn)擊“更新”,出現(xiàn)提示后,點(diǎn)擊“我了解”?,F(xiàn)在,回到終端,執(zhí)行以下命令:
- git push origin --delete master
這應(yīng)該就可以了。
引起分歧的技術(shù)術(shù)語方面有更多工作要做
我希望技術(shù)界能效仿GitHub,刪除所有引起分歧的術(shù)語。Go以及谷歌的Android和Chrome等項(xiàng)目已經(jīng)在努力進(jìn)行這種改變。雖然Kubernetes使用“node”和“replicas”之類的術(shù)語,但截至2020年6月,仍有200多行Kubernetes代碼引用了“slave”。
這方面有很多工作要做,但是技術(shù)很靈活,負(fù)責(zé)開發(fā)技術(shù)的人高瞻遠(yuǎn)矚。只要集體推動(dòng),就可以從整個(gè)生態(tài)圈剔除引起分歧的術(shù)語。
原文標(biāo)題:GitHub to replace master with main starting in October: What developers need to do now,作者:Jack Wallen
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】