Skip to main content

合并拉取请求

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

Tool navigation

关于拉取请求合并

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

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

您可以自动合并请求

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

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

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

注意

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

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

通过关键词关闭问题

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

合并拉取请求

  1. 在仓库名称下,单击 “Pull requests”****。

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

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

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

    •     [将所有提交合并到基分支中](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges),请单击“合并拉取请求”。 如果未显示“合并拉取请求”**** 选项,请单击合并下拉菜单并选择“创建合并提交”****。
      

      拉取请求的合并选项的屏幕截图。 用于展开下拉列表的箭头以深橙色轮廓显示。

    • 单击合并下拉菜单,选择“压缩并合并”,然后单击“压缩并合并”,将多个提交压缩为一个提交

    •           单击合并下拉菜单,选择“变基并合并”[](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#rebase-and-merge-your-pull-request-commits),然后单击“变基并合并”****,**将提交逐个变基到基础分支**。
      

    注意

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

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

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

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

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

    注意

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

  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

其他阅读材料

  •         [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request)
    
  •           使用 GitHub Desktop
    

在 GitHub Desktop 中同步分支 * 关于拉取请求合并 * 解决合并冲突