如何删除您的主分支

如何将默认分支从 master 迁移走

在 Selenium 项目中,我们实践主干开发,其中 trunk 是仓库默认 git 分支的常用名称。然而,当项目迁移到 GitHub 时,该仓库遵循了传统的做法,使用 master 作为默认 git 分支的名称。

为了使 Selenium 项目成为一个更加包容、欢迎所有人的地方,我们决定使用 trunk 作为默认 git 分支,并在切换后删除 master 分支。这一更改带来了一些挑战。这篇博文将指出一些您在 GitHub 仓库中进行相同更改时应注意的事项。

在文档中链接代码的特定部分是很常见的,该链接通常包含分支名称。请仔细检查您的文档中指向 master 分支上的文件的链接,因为它们在更改后可能会失效。

分支名称的提及

同样,分支名称会在仓库的不同部分被提及,例如代码注释、贡献说明、问题和拉取请求模板以及自述文件。不要忘记检查这些地方。

GitHub 仓库徽章

我们都喜欢通过添加尽可能多的徽章来展示我们的 GitHub 仓库的运行情况。在许多情况下,这些徽章报告的构建状态取决于执行构建的分支。请确保您的 Travis/CircleCI/GitHub Actions 徽章指向新分支。

持续集成设置

在开源中,一个好的做法是设置持续集成来运行构建、执行测试,并可能进行自动化发布。如今,CI 配置是在文件中完成的(例如,Travis 的 .travis.yml),该配置的一个重要部分是应该执行构建的分支的名称。与前一点类似,请仔细检查您的 CI 集成中是否正确配置了新的分支名称。

构建脚本

在 Selenium 项目中,我们有一些通过持续集成设置执行的自定义构建脚本。一个例子是为 Java、Ruby 和 Python 绑定生成文档的脚本。此脚本需要知道代码的分支名称才能生成文档。如果您有类似目的的脚本,请在更改分支名称后检查它们。

打开的拉取请求

以上所有任务都可以通过文本编辑器和在仓库中的所有文件中进行大规模但细致的“查找和替换”来实现。简而言之,我们迁移到新分支 trunk 的过程如下:

  1. 创建一个名为 trunk 的新分支,该分支基于 master 分支。
  2. 完成前面几点中描述的所有项目。
  3. 提交并推送这些更改。
  4. 删除 master 分支。

然而,发生了一件我们没有预料到的事情:在删除 master 分支后,所有打开的拉取请求都被关闭了。这是有道理的,因为它们都以 master 分支为目标。因此,在删除您的 master 分支之前,请仔细检查,并在需要时编辑打开的拉取请求,以便它们以新分支为目标。

毋庸置疑,您的新分支的名称可以是任何适合您的上下文和环境的名称。例如,包含 Selenium 网站内容的仓库现在使用 dev 作为包含网站源文件的分支,使用 publish 作为包含生成的静态网站的分支,该静态网站将被发布

这些是在 SeleniumHQ GitHub 组织下的所有主要仓库中删除 master 分支过程中我们吸取的教训。如果您决定将默认分支的名称从 master 更改为其他名称,希望这些教训对您有所帮助。

这最初发布于 https://opensource.saucelabs.com/blog/how_to_delete_your_master_branch/

上次修改时间:2021年8月7日: 重命名目录 (e9895f27c26)