5步将 GitHub 默认分支从 Master 更改为 Main

政策一定是后置的,企业和行业是探索的先行者。

2020年6月,GitHub 宣布它将开始在其站点上删除对master的引用,并且认为通过将存储库中的默认分支名称更改为main而不是master,我们所有人都可以在消除技术上的分歧性语言方面迈出步伐。对于之前的代码存储库,如果你的代码 CI/CD 代码逻辑和分支名称没有关系(不会产生关联问题),不妨通过以下5个步骤,与大部分代码存储库行为保持一致。

从2021年1月开始,GitHub 将开始推出功能,以使重命名现有存储库的默认分支变得更加容易。https://github.com/github/renaming

TL;DR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Step 1: create main branch locally, taking the history from master
git branch -m master main

# Step 2: push the new local main branch to the remote repo (GitHub)
git push -u origin main

# Step 3: switch the current HEAD to the main branch
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

# Step 4: change the default branch on GitHub to main
# https://docs.github.com/en/github/administering-a-repository/setting-the-default-branch

# Step 5: delete the master branch on the remote
git push origin --delete master

一、将master分支移至main

第1步-
运行以下命令,使用master的历史记录创建一个名为main的分支。使用该参数-m会将master分支上的所有提交历史记录转移到新的main分支上,因此不会丢失任何内容。

1
git branch -m master main

二、将main推送到远程仓库

请记住,git是本地计算机上的版本控制软件,而GitHub是存储代码的远程服务器。因此,您必须将新的main分支推送到GitHub,并告诉本地分支开始跟踪具有相同名称的远程分支。

1
git push -u origin main

三、将HEAD指向“主要”分支

在此阶段,如果master是您的默认分支,则必须先更改指向当前分支引用的指针HEAD,才能删除它。以下命令将其指向main

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

四、在GitHub网站上将默认分支更改为’main’

至此,您已经成功将所有内容都转移到了main分支,但是如果不将GitHub中的默认分支更改为master以外的其他内容,就无法删除master分支。这是唯一需要您离开终端并在浏览器中导航到GitHub存储库的步骤。从那里,单击”Settings” -> “Branches”左导轨,然后将默认分支更改为main。我在下面提供了一些屏幕截图,GitHub在此处提供了执行此操作的说明:https : //docs.github.com/en/github/administering-a-repository/setting-the-default-branch。

五、删除远程仓库上的master分支

现在本地的master已经消失了,在 GitHub 上没有指向它的东西,我们可以使用以下命令将其删除:

1
git push origin --delete master

搞定!我们应该不再在本地或在GitHub存储库上看到masterremotes/origin/master

可以始终运行git branch -a命令检查。

Reference

  1. 5 steps to change GitHub default branch from master to main
  2. Renaming the default branch from master
  3. master-to-main