gitHub把master分支換成main,你知道了麼?

10月份開始GitHub把master換成main:這是開發者需要知道的幾點

gitHub把master分支換成main,你知道了麼?

另一項服務正從其技術剔除引起分歧的“master”術語。這回主角是GitHub,新的術語將由“master”改為“main”。這一變化的原因應該很明顯,但此舉是為了使這家公司擺脫任何提及奴隸制的印象,換成不會有誤解的包容性術語。

技術界早該進行這種變化了,但至少終於有了實際行動。從2020年10月1日開始,所有“master分支”一律改名為“main分支”。

對於接觸Git和GitHub已有多年的開發者來說,這個變化將需要一段時間來適應。即使您知道變化是正確的做法,多年來手指還是習慣輸入git checkout master。現在,您要改為git checkout main。

我預計其他許多技術會仿而效之,所以開發者很可能會在某個時候對他們使用的許多工具進行類似的改變。但是GitHub不同。GitHub被數百萬開發者使用,其中一些人單槍匹馬,但許多人一起工作。這意味著變化將是全球性的、涵蓋整個專案的。

開發者需要對GitHub的這一變化知道什麼?

除了術語上的變化外,這還會如何直接影響您?不妨看一下。

首先,GitHub已經進行了以下變化:

含有已刪除的分支名稱“master”的GitHub。com連結已經重定向至“main”。

GitHub頁面已更新,可以從任何分支加以部署。

GitHub添加了使用者、組織和企業設定,以便開發者可以為所有新建立的儲存庫設定預設分支名稱。

2020年10月1日,新建立的儲存庫將預設為“main”。現有儲存庫會有與目前同樣的預設分支,這一變化不會影響現有的儲存庫。使用者、組織和企業可以在以下位置選擇退出該變化:

使用者:https://github。com/settings/repositories

組織所有者:https://github。com/organizations/YOUR-ORGANIZATION/settings/repository-defaults

企業管理員:https://github。com/enterprises/YOUR-ENTERPRISE/settings/member_privileges

到今年年底,所有現有儲存庫都將換成新的命名約定。這帶來了一系列特殊的挑戰,包括:

開啟的合併請求定向到新命名的分支;

草稿版本必須定向到新命名的分支;以及

分支保護策略必須轉移到新命名的分支。

GitHub的目的是確保到今年年底,所有儲存庫能夠無縫地重新命名預設分支。這意味著當您重新命名分支時,GitHub將自動重定向開啟的合併請求和草稿版本,並遷移分支保護策略。GitHub還希望能夠重定向使用git fetch或git clone的使用者,將舊的分支名稱改為新的分支名稱。

您可能認為所有這些變化應該輕而易舉,但是鑑於GitHub有4000多萬用戶、1億多個儲存庫以及至少2800萬個公共儲存庫,這是項艱鉅的任務。一個規劃不當的舉動會導致Linux核心之類的專案發覺其程式碼無法訪問。鑑於全球大批企業依賴Linux核心,因此這類事件可能是災難性的,因此GitHub做好這項工作至關重要。

如何將GitHub專案的預設分支從master遷移到main?

在GitHub做份內事的同時,您可以採取的最重要步驟是將您所有專案的預設分支由“master”遷移到“main”。不然,您將依賴GitHub建立的工具來自動完成這項工作。我會很籠統地介紹要採取的步驟。

在執行任何操作之前,備份您的所有工作——您不希望因分支重新命名而丟失資料。

使用以下命令將master分支移到main:

git branch -m master main

使用以下命令將新命名的main分支推送到GitHub(假設這是您的遠端儲存庫):

git push -u origin main

使用以下命令將HEAD指向main:

git symbolic-ref refs / remotes / origin / HEAD refs / remotes / origin / main

現在,您需要將“main”設定為GitHub上您專案的預設分支。為此,登入進入到您的GitHub帳戶,開啟專案的儲存庫,點選“設定” |“分支”。在左側邊欄中,點選“分支”,然後從下拉列表中選擇“Main”作為預設值。點選“更新”,出現提示後,點選“我瞭解”。現在,回到終端,執行以下命令:

git push origin ——delete master

這應該就可以了。

引起分歧的技術術語方面有更多工作要做

我希望技術界能效仿GitHub,刪除所有引起分歧的術語。Go以及谷歌的Android和Chrome等專案已經在努力進行這種改變。雖然Kubernetes使用“node”和“replicas”之類的術語,但截至2020年6月,仍有200多行Kubernetes程式碼引用了“slave”。

這方面有很多工作要做,但是技術很靈活,負責開發技術的人高瞻遠矚。只要集體推動,就可以從整個生態圈剔除引起分歧的術語。