跳至主要内容

合并拉取请求

工作完成后,将合并请求合并到上游分支。任何具有存储库推送权限的人员都可以完成合并。

关于合并请求合并

在合并请求中,你建议将你在头分支上所做的更改合并到基础分支中。默认情况下,任何合并请求都可以在任何时间合并,除非头分支与基础分支冲突。但是,可能会对何时可以将合并请求合并到特定分支进行限制。例如,你可能只有在必需的状态检查通过时才能将合并请求合并到默认分支。存储库管理员可以使用分支保护规则向分支添加此类约束。有关详细信息,请参阅“关于受保护分支”。

作为分支保护规则或标签保护规则的替代方案,你可以创建规则集。规则集比分支和标签保护规则有一些优势,例如状态,以及无需管理员访问权限即可更好地发现。你还可以同时应用多个规则集。有关详细信息,请参阅“关于规则集”。

当所有合并要求得到满足时,你可以将一个拉取请求配置为自动合并。更多信息,请参阅“自动合并拉取请求”。

如果拉取请求有合并冲突,或者你希望在合并之前测试更改,你可以在本地签出拉取请求并使用命令行合并它。

你无法合并草稿拉取请求。更多有关草稿拉取请求的信息,请参阅“关于拉取请求”。

可以配置存储库,以便在合并拉取请求时自动删除拉取请求的头分支。更多信息,请参阅“管理分支的自动删除”。

注意:如果你在拉取请求合并后删除了头分支,GitHub 会检查同一存储库中是否有任何开放的拉取请求将已删除的分支指定为其基本分支。GitHub 会自动更新任何此类拉取请求,将其基本分支更改为已合并拉取请求的基本分支。更多信息,请参阅“关于分支”。

拉取请求使用--no-ff 选项合并,但对于提交已压缩或已变基的拉取请求除外,这些请求使用快速转发选项合并。

你可以将一个拉取请求链接到一个议题,以表明修复正在进行中,并在有人合并拉取请求时自动关闭该议题。更多信息,请参阅“将拉取请求链接到议题”。

如果你决定不希望将主题分支中的更改合并到上游分支,你可以关闭拉取请求而不进行合并。

合并拉取请求

  1. 在存储库名称下,单击 拉取请求.

    Screenshot of the main page of a repository. In the horizontal navigation bar, a tab, labeled "Pull requests," is outlined in dark orange.

  2. 在“拉取请求”列表中,单击要合并的拉取请求。

  3. 向下滚动到拉取请求底部。根据为存储库启用的合并选项,你可以

    注意:变基并合并始终会更新提交者信息并创建新的提交 SHA。有关详细信息,请参阅“关于拉取请求合并”。

  4. 如果出现提示,请键入提交消息,或接受默认消息。

    有关压缩合并的默认提交消息的信息,请参阅“关于拉取请求合并”。

  5. 如果你在 GitHub.com 上的帐户关联了多个电子邮件地址,请单击电子邮件地址下拉菜单并选择要作为 Git 作者电子邮件地址的电子邮件地址。只有经过验证的电子邮件地址才会显示在此下拉菜单中。如果你启用了电子邮件地址隐私,则 no-reply 将成为默认提交作者电子邮件地址。有关 no-reply 电子邮件地址可以采用的确切形式的详细信息,请参阅“设置你的提交电子邮件地址”。

    Screenshot of a GitHub pull request showing a dropdown menu with options to choose the commit author email address. octocat@github.com is selected.

    注意:电子邮件选择器不适用于不会创建合并提交的变基合并。对于压缩合并,仅当你是拉取请求作者并且你的帐户关联了多个电子邮件地址时,才会显示电子邮件选择器。

  6. 单击确认合并确认合并并压缩确认变基并合并

  7. 可选,删除分支。这将保持存储库中分支列表的整洁。

若要了解有关 GitHub CLI 的更多信息,请参阅“关于 GitHub CLI”。

若要合并拉取请求,请使用 gh pr merge 子命令。将 pull-request 替换为拉取请求的编号、URL 或头分支。

gh pr merge PULL-REQUEST

按照交互式提示完成合并。有关可供选择的合并方法的更多信息,请参阅“关于拉取请求合并”。

或者,你可以使用标志跳过交互式提示。例如,此命令会将提交压缩到一个提交中,并带有提交消息“我的压缩提交”,将压缩的提交合并到基础分支中,然后删除本地和远程分支。

gh pr merge 523 --squash --body "my squash commit" --delete-branch

延伸阅读