10月份开始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:

  1. git branch -m master main 

使用以下命令将新命名的main分支推送到GitHub(假设这是您的远程存储库):

  1. git push -u origin main 

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

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

现在,您需要将“main”设置为GitHub上您项目的默认分支。为此,登录进入到您的GitHub帐户,打开项目的存储库,点击“设置” |“分支”。在左侧边栏中,点击“分支”,然后从下拉列表中选择“Main”作为默认值。点击“更新”,出现提示后,点击“我了解”。现在,回到终端,执行以下命令:

  1. git push origin --delete master 

这应该就可以了。

引起分歧的技术术语方面有更多工作要做

我希望技术界能效仿GitHub,删除所有引起分歧的术语。Go以及谷歌的Android和Chrome等项目已经在努力进行这种改变。虽然Kubernetes使用“node”和“replicas”之类的术语,但截至2020年6月,仍有200多行Kubernetes代码引用了“slave”。

这方面有很多工作要做,但是技术很灵活,负责开发技术的人高瞻远瞩。只要集体推动,就可以从整个生态圈剔除引起分歧的术语。

原文标题:GitHub to replace master with main starting in October: What developers need to do now,作者:Jack Wallen

相关内容