创建合并请求

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: JihuLab.com, 私有化部署

当您准备创建合并请求时,请使用适合您工作流程的方法。极狐GitLab 用户界面提供了多种创建合并请求的方法,同时也有界面外的方法可供选择:

为了简化将合并请求连接到分支的过程,请在命名分支时遵循 分支命名模式

所有创建合并请求的方法都将强制执行项目的分支命名规则

从合并请求列表中#

您可以从合并请求列表中创建合并请求。

  1. 在左侧边栏中,选择 搜索或转到 并找到您的极狐GitLab 项目。
  2. 选择 代码 > 合并请求
  3. 在右上角,选择 新建合并请求
  4. 选择一个源分支和目标分支,然后选择 比较分支并继续
  5. 新建合并请求 页面上填写字段,然后选择 创建合并请求

每个分支只能与一个开放的合并请求关联。如果此分支已经存在一个合并请求,则显示指向现有合并请求的链接。

从议题中#

如果您的开发工作流程需要每个合并请求都有一个议题,您可以直接从议题中创建分支以加快流程。新分支及其后的合并请求将标记为与此议题相关。在合并请求合并后,议题将自动关闭,除非自动议题关闭被禁用

要同时创建分支和合并请求:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 计划 > 议题 并找到您的议题。
  3. 转到议题描述的底部。
  4. 选择 创建合并请求 > 创建合并请求和分支
  5. 在对话框中,查看建议的分支名称。它基于项目的分支名称模板
  6. 可选。如果分支名称已被占用,或者您需要不同的分支名称,请重命名它。
  7. 选择一个源分支或标签。
  8. 选择 创建合并请求

从任务中#

History
    • 在极狐GitLab 17.8 中引入。

如果您的团队将议题拆分为任务,您可以直接从任务中创建分支以加快流程。新分支及其后的合并请求将标记为与此任务相关。在合并请求合并后,任务将自动关闭,除非自动议题关闭被禁用

前提条件:

  • 您必须至少拥有包含任务的项目的开发者角色。

要同时创建分支和合并请求:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 计划 > 议题
  3. 在议题列表中,找到您的任务。
  4. 转到任务描述的底部。
  5. 选择 创建合并请求
  6. 在对话框中,查看建议的分支名称。它基于项目的分支名称模板
  7. 可选。如果分支名称已被占用,或者您需要不同的分支名称,请重命名它。
  8. 选择一个源分支或标签。
  9. 选择 创建合并请求

如果您的 Git 仓库为空,极狐GitLab:

  • 创建一个默认分支。
  • 提交一个空白的 README.md 文件到该分支。
  • 创建并重定向您到一个基于议题标题的新分支。
  • 如果您的项目配置了部署服务,如 Kubernetes,极狐GitLab 会提示您通过帮助创建 .gitlab-ci.yml 文件来设置自动部署

如果您创建的分支名称以任务编号为前缀,极狐GitLab 会交叉链接议题和合并请求,并将关闭模式添加到合并请求的描述中。在大多数情况下,这看起来像 Closes #ID,其中 ID 是任务的 ID。如果您的项目配置了关闭模式,任务在合并请求合并时关闭。

从 Web 编辑器中#

您可以在 Web 编辑器中执行以下操作时创建合并请求:

当您创建分支时#

当您创建分支时,可以创建合并请求。

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 代码 > 分支
  3. 输入分支名称并选择 新分支
  4. 在文件列表上方,选择 创建合并请求。合并请求已创建。默认分支为目标。
  5. 填写字段并选择 创建合并请求

当您在 fork 中工作时#

您可以从 fork 中创建合并请求,以便回馈主项目。

  1. 在左侧边栏中,选择 搜索或转到 并找到您的 fork。

  2. 选择 代码 > 合并请求,并选择 新建合并请求

  3. 对于 源分支,选择包含更改的 fork 中的分支。

  4. 对于 目标分支

    1. 选择上游仓库,而不是您的 fork。如果您频繁向上游贡献更改,请考虑为您的 fork 设置一个默认目标

    2. 从上游仓库中选择一个分支:

      选择分支

    如果您的 fork 的可见性比父仓库更受限,目标分支默认为您的 fork 的默认分支。这可以防止您 fork 中的私人信息潜在暴露。
  5. 选择 比较分支并继续

  6. 选择 创建合并请求。合并请求在目标仓库中创建,而不是您的 fork。

  7. 添加所需的标签、里程碑、审阅者和受理人。

  8. 选择 提交合并请求

如果合并请求的目标是另一个仓库,它将使用:

  • 目标项目的审批规则。
  • 您 fork 的 CI/CD 配置、资源和项目 CI/CD 变量。

要在上游项目中运行 CI/CD 流水线,您必须是该项目的成员。如果您在父项目中运行合并请求流水线在父项目中运行,来自 fork 的合并请求的所有变量将对流水线可用。

在您的工作合并后,如果您不打算进行更多贡献,取消链接您的 fork与其上游仓库。

设置默认目标项目#

默认情况下,源自 fork 的合并请求目标为上游仓库,而不是您的 fork。您可以将 fork 仓库配置为默认目标,而不是上游仓库。

前提条件:

  • 您正在一个 fork 中工作。
  • 您必须至少拥有开发者角色,或者被允许在项目中创建合并请求。
  • 上游仓库允许创建合并请求。
  • fork 的可见性设置必须匹配或比上游仓库更不严格。例如:如果您的 fork 是私有的,而上游是公开的,则不会显示此设置。

要执行此操作:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > 合并请求
  3. 目标项目 部分,选择您要用于默认目标项目的选项。
  4. 选择 保存更改

通过发送电子邮件#

您可以通过向极狐GitLab 发送电子邮件消息来创建合并请求。合并请求的目标分支是仓库的默认分支。

前提条件:

  • 合并请求必须以当前仓库为目标,而不是上游仓库。
  • 极狐GitLab 管理员必须配置接收电子邮件。此设置在 JihuLab.com 上启用。
  • 极狐GitLab 管理员必须配置通过电子邮件回复。此设置在 JihuLab.com 上启用。
  • 您必须至少拥有开发者角色,或者被允许在项目中创建合并请求。

要通过发送电子邮件创建合并请求:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。

  2. 选择 代码 > 合并请求

  3. 如果项目包含任何合并请求,选择 通过电子邮件发送新的合并请求到此项目

  4. 在对话框中,复制显示的电子邮件地址。请将此地址保密。任何拥有该地址的人都可以以您的身份创建议题或合并请求。

  5. 打开电子邮件并撰写包含以下信息的消息:

    • 收件人 行是您复制的电子邮件地址。
    • 主题 是源分支名称。
    • 电子邮件正文是合并请求描述。
  6. 要添加提交,请将 .patch 文件附加到消息中。

  7. 发送电子邮件。

合并请求已创建。

通过电子邮件创建合并请求时添加附件#

通过将补丁作为附件添加到电子邮件中来向合并请求添加提交。

  • 补丁的总大小必须为 2 MB 或更小。
  • 若要被视为补丁,附件的文件名必须以 .patch 结尾。
  • 补丁按名称顺序处理。
  • 如果主题中的源分支不存在,则从仓库的 HEAD 或默认目标分支创建它。要手动更改目标分支,请使用/target_branch 快速操作
  • 如果源分支已经存在,则补丁会应用到它之上。

故障排除#

在议题上没有创建合并请求的选项#

如果出现以下情况,议题上不会显示 创建合并请求 选项:

  • 已存在同名分支。
  • 已经存在一个合并请求用于此分支。
  • 您的项目有一个活动的 fork 关系。
  • 您的项目是私有的,并且议题是保密的。

要使此按钮出现,一种可能的解决方法是移除项目的 fork 关系。移除后,您无法恢复 fork 关系。您的项目将无法再向源项目或其其他 fork 发送或接收合并请求。

无法处理电子邮件消息#

当发送电子邮件以创建合并请求,并尝试以上游仓库为目标时,极狐GitLab 会响应此错误:

plaintext
Unfortunately, your email message to GitLab could not be processed. You are not allowed to perform this action. If you believe this is in error, contact a staff member.