跳至主要内容

合并拉取请求

在工作完成后,将拉取请求合并到上游分支。拥有仓库推送权限的任何人都可以完成合并。

关于拉取请求的合并

在拉取请求中,您提议将您在头分支上所做的更改合并到基础分支。默认情况下,任何拉取请求都可以随时合并,除非头分支与基础分支存在冲突。然而,您可能会受到在何时将拉取请求合并到特定分支的限制。例如,只有在必需的状态检查通过时,您才能将拉取请求合并到默认分支。仓库管理员可以使用分支保护规则向分支添加此类约束。欲了解更多信息,请参阅 关于受保护的分支

作为分支保护规则的替代方案,您可以创建规则集。规则集相较于分支保护规则具有一些优势,例如对状态的支持,以及在无需管理员权限的情况下更好的可发现性。您还可以同时应用多个规则集。欲了解更多信息,请参阅 关于规则集

您可以配置拉取请求,使其在满足所有合并要求时自动合并。欲了解更多信息,请参阅 自动合并拉取请求

如果拉取请求存在合并冲突,或您希望在合并前先测试更改,您可以 在本地检出拉取请求 并使用命令行进行合并。

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

仓库可能已配置为在合并拉取请求时自动删除该拉取请求的头分支。欲了解更多信息,请参阅 管理分支的自动删除

注意

如果在拉取请求合并后删除头分支,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 账户关联了多个电子邮件地址,请点击电子邮件地址下拉菜单并选择要用作 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

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

或者,您可以使用标志跳过交互提示。例如,以下命令会将提交压缩为单个提交,提交信息为 “my squash commit”,随后将该压缩提交合并到基础分支,并删除本地和远程分支。

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

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.