

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 合并拉取请求
<a name="pull-requests-merge"></a>

在您的代码经过审核并且所有必需的审阅者都已批准之后，您可以使用支持的合并策略（例如快进）在 CodeCatalyst 控制台中合并拉取请求。并非 CodeCatalyst 控制台支持的所有合并策略都可用作所有拉取请求的选项。 CodeCatalyst 评估合并，并且仅允许您在控制台中可用且能够将源分支合并到目标分支的合并策略之间进行选择。您还可以使用所选的 Git 合并策略来合并拉取请求，方法是在本地计算机或开发环境中运行 **git merge** 命令来将源分支合并到目标分支中。然后，您可以将目标分支中的这些更改推送到中的源存储库 CodeCatalyst。

**注意**  
合并分支并在 Git 中推送更改不会自动关闭拉取请求。

如果您具有项目管理员角色，则还可以选择合并尚未满足所有审批要求和审批规则的拉取请求。

## 合并拉取请求（控制台）
<a name="pull-requests-merge-console"></a>

如果源分支和目标分支之间没有合并冲突，并且所有必需的审阅者都批准了拉取请求，则可以在 CodeCatalyst 控制台中合并拉取请求。如果发送冲突或者无法完成合并，则合并按钮将处于非活跃状态，并显示**不可合并**标签。在这种情况下，您必须获得所有必需的批准者的审批，本地解决冲突（如有必要）并推送这些更改，之后才能进行合并。合并拉取请求会自动向拉取请求的创建者以及任何所需或可选的审阅者发送一封电子邮件。这不会自动关闭或更改与拉取请求链接的任何事务的状态。

**提示**  
您可以在个人资料中配置您将收到哪些拉取请求事件的相关电子邮件。有关更多信息，请参阅 [从 CodeCatalyst 发送 Slack 和电子邮件通知](notifications-manage.md)。<a name="pull-requests-merge-console"></a>

**合并拉取请求**

1. 导航到要在其中合并拉取请求的项目。

1. 在项目页面上的**打开拉取请求**下，选择要合并的拉取请求。如果您未看到拉取请求，请选择**查看所有拉取请求**，然后从列表中选择该拉取请求。或者，在导航窗格中，选择**代码**，再选择**拉取请求**，然后选择要合并的拉取请求。选择**合并**。

1. 从拉取请求的可用合并策略中选择。（可选）选择或取消选择在合并拉取请求后删除源分支的选项，然后选择**合并**。
**注意**  
如果 “**合并**” 按钮处于非活动状态，或者您看到 “**不可合并**” 标签，则表示必需的审阅者尚未批准拉取请求，或者无法在控制台中合并拉取请求。 CodeCatalyst **概述**中的**拉取请求详细信息**区域中的时钟图标会指示尚未批准拉取请求的审阅者。如果所有必需的审阅者都已批准拉取请求，但**合并**按钮仍处于非活跃状态，则可能存在合并冲突。选择带下划线的**不可合并**标签，以查看有关拉取请求无法合并的原因的更多详细信息。您可以在开发环境或 CodeCatalyst 控制台中解决目标分支的合并冲突，然后合并拉取请求，也可以解决冲突并在本地合并，然后将包含合并的提交推送到中的源分支 CodeCatalyst。有关更多信息，请参阅[合并拉取请求（Git）](#pull-requests-merge-git)和您的 Git 文档。

## 覆盖合并要求
<a name="pull-requests-merge-override"></a>

如果您具有**项目管理员**角色，则可以选择合并尚未满足所有必需的审批要求和审批规则的拉取请求。这称为覆盖拉取请求的要求。如果必需的审阅者不可用，或者迫切需要将特定的拉取请求合并到具有无法快速满足的审批规则的分支中，则可以选择执行此操作。<a name="pull-requests-merge-console"></a>

**合并拉取请求**

1. 在要覆盖要求并合并的拉取请求中，选择**合并**按钮旁边的下拉箭头。选择**覆盖审批要求**。

1. 在**覆盖原因**中，详细说明为什么要在拉取请求未达到审批规则和必需的审阅者要求的情况下覆盖此拉取请求。虽然这是一项可选操作，但强烈建议您这样做。

1. （可选）选择合并策略或接受默认值。您也可以选择使用更多详细信息更新自动生成的提交消息。

1. 选择或取消选择该选项可在合并时删除源分支。建议您在覆盖合并拉取请求的要求时保留源分支，直到您有机会与其他团队成员一起审阅该决定。

1. 选择**合并**。

## 合并拉取请求（Git）
<a name="pull-requests-merge-git"></a>

Git 支持许多用于合并和管理分支的选项。以下命令是您可使用的一些选项。有关更多信息，请参阅 [Git 网站](https://git-scm.com/doc)上的可用文档。在合并并推送更改后，请手动关闭拉取请求。有关更多信息，请参阅 [关闭拉取请求](pull-requests-close.md)。


**用于合并分支的常用 Git 命令**  

|  |  | 
| --- |--- |
|  将本地存储库中的源分支的更改合并到本地存储库中的目标分支。  |  `git checkout destination-branch-name` `git merge source-branch-name`  | 
|  将源分支合并到目标分支，并指定快进式合并。这会合并分支并将目标分支指针移动到源分支的最新块。  |  `git checkout destination-branch-name` `git merge --ff-only source-branch-name`  | 
|  将源分支合并到目标分支，并指定压缩合并。这会将源分支中的所有提交合并到目标分支中的单个合并提交。  |  `git checkout destination-branch-name` `git merge --squash source-branch-name`  | 
|  将源分支合并到目标分支，并指定三向合并。这会创建合并提交，并将源分支中的各个提交添加到目标分支。  |  `git checkout destination-branch-name` `git merge --no-ff source-branch-name`  | 
|  删除本地存储库中的源分支。在合并到目标分支并将更改推送到源存储库之后，执行此操作对于清理本地存储库非常有用。  |  `git branch -d source-branch-name`  | 
|  使用本地存储库为远程存储库指定的昵称删除远程存储库（中的源存储库 CodeCatalyst）中的源分支。（注意冒号（`:`）的用法。） 或者，在命令中指定 `--delete`。  |  `git push remote-name :source-branch-name` `git push remote-name --delete source-branch-name`  | 