Skip to main content

合并拉取请求

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

Tool navigation

关于拉取请求合并

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

可以创建规则集作为分支保护规则的替代方法。 相比分支保护规则,规则集有更多的优势,例如它有状态,可发现性更好,而且无需管理员访问权限。 还可以同时应用多个规则集。 有关详细信息,请参阅“关于规则集”。

您可以配置拉取请求在满足所有合并要求时自动合并。 有关详细信息,请参阅“自动合并拉取请求”。

如果拉取请求具有合并冲突,或者你在合并前想要测试更改,可以本地签出拉取请求,然后使用命令行进行合并。

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

仓库可配置为在您合并拉请求时自动删除拉取请求的头部分支。 有关详细信息,请参阅“管理分支的自动删除”。

Note

如果您在拉取请求合并后删除头部分支,GitHub 会检查将已删除分支指定为基础分支的同一仓库中的任何开放拉取请求。 GitHub 将自动更新任何此类拉取请求,将其基础分支更改为合并的拉取请求的基础分支。 有关详细信息,请参阅“关于分支”。

拉取请求可通过 --no-ff 选项 进行合并,但其提交已压缩或变基的拉取请求除外,这些拉取请求通过快进选项进行合并。

你可以将拉取请求链接到问题,以显示修复正在进行中,并在某人合并拉取请求时自动关闭该问题。 有关详细信息,请参阅“将拉取请求链接到议题”。

如果决定不想让主题分支中的更改合并到上游分支,可以关闭拉取请求而不合并。

合并拉取请求

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

    存储库的主页的屏幕截图。 在水平导航栏中,标记为“拉取请求”的选项卡以深橙色标出。

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

  3. 向下滚动到拉取请求底部。 根据对仓库启用的合并选项,您可以:

    Note

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

  4. 如有提示,输入提交消息,或接受默认消息。

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

  5. 如果在 GitHub 上有多个电子邮件地址与你的帐户关联,请单击电子邮件地址下拉菜单,然后选择要用作 Git 作者电子邮件地址的电子邮件地址。 只有经过验证的电子邮件地址才会出现在此下拉菜单中。 如果启用了电子邮件地址隐私,则使用无回复电子邮件地址作为默认提交作者的电子邮件地址。 有关无回复电子邮件地址可以采用的确切格式的详细信息,请参阅“设置提交电子邮件地址”。

    GitHub 拉取请求的屏幕截图,其中显示了一个下拉菜单,包含用于选择提交作者电子邮件地址的选项。 已选择 octocat@github.com。

    Note

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

  6. 单击“确认合并”、“确认压缩并合并”,或“确认变基并合并” 。

  7. (可选)删除分支。 这有助于仓库的分支列表保持整洁。

Note

若要详细了解 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

其他阅读材料