合并拉取请求 - Amazon CodeCatalyst

合并拉取请求

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

注意

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

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

合并拉取请求(控制台)

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

提示

您可以在个人资料中配置您将收到哪些拉取请求事件的相关电子邮件。有关更多信息,请参阅从 CodeCatalyst 发送 Slack 和电子邮件通知

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

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

  3. 从拉取请求的可用合并策略中选择。(可选)选择或取消选择在合并拉取请求后删除源分支的选项,然后选择合并

    注意

    如果合并按钮处于非活跃状态,或者您看到不可合并标签,则说明必需的审阅者尚未批准拉取请求,或者无法在 CodeCatalyst 控制台中合并拉取请求。概述中的拉取请求详细信息区域中的时钟图标会指示尚未批准拉取请求的审阅者。如果所有必需的审阅者都已批准拉取请求,但合并按钮仍处于非活跃状态,则可能存在合并冲突。选择带下划线的不可合并标签,以查看有关拉取请求无法合并的原因的更多详细信息。您可以在开发环境或 CodeCatalyst 控制台中解决目标分支的合并冲突,然后合并拉取请求;也可以解决冲突并在本地合并,然后将包含合并的提交推送到 CodeCatalyst 中的源分支。有关更多信息,请参阅合并拉取请求(Git)和您的 Git 文档。

覆盖合并要求

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

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

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

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

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

  5. 选择合并

合并拉取请求(Git)

Git 支持许多用于合并和管理分支的选项。以下命令是您可使用的一些选项。有关更多信息,请参阅 Git 网站上的可用文档。在合并并推送更改后,请手动关闭拉取请求。有关更多信息,请参阅关闭拉取请求

用于合并分支的常用 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