创建合并请求
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
当您准备创建合并请求时,请使用适合您工作流程的方法。极狐GitLab 用户界面提供了多种创建合并请求的方法,同时也有界面外的方法可供选择:
- 使用命令行,通过 glab mr 命令,或结合 Git 命令 和 推送选项。
- Visual Studio Code 扩展。
- 通过发送电子邮件。
- 合并请求 API。
为了简化将合并请求连接到分支的过程,请在命名分支时遵循 分支命名模式。
所有创建合并请求的方法都将强制执行项目的分支命名规则。
从合并请求列表中
您可以从合并请求列表中创建合并请求。
- 在左侧边栏中,选择 搜索或转到 并找到您的极狐GitLab 项目。
- 选择 代码 > 合并请求。
- 在右上角,选择 新建合并请求。
- 选择一个源分支和目标分支,然后选择 比较分支并继续。
- 在 新建合并请求 页面上填写字段,然后选择 创建合并请求。
每个分支只能与一个开放的合并请求关联。如果此分支已经存在一个合并请求,则显示指向现有合并请求的链接。
从议题中
如果您的开发工作流程需要每个合并请求都有一个议题,您可以直接从议题中创建分支以加快流程。新分支及其后的合并请求将标记为与此议题相关。在合并请求合并后,议题将自动关闭,除非自动议题关闭被禁用:
要同时创建分支和合并请求:
- 在左侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 计划 > 议题 并找到您的议题。
- 转到议题描述的底部。
- 选择 创建合并请求 > 创建合并请求和分支。
- 在对话框中,查看建议的分支名称。它基于项目的分支名称模板。
- 可选。如果分支名称已被占用,或者您需要不同的分支名称,请重命名它。
- 选择一个源分支或标签。
- 选择 创建合并请求。
从任务中
History
- 在极狐GitLab 17.8 中引入。
如果您的团队将议题拆分为任务,您可以直接从任务中创建分支以加快流程。新分支及其后的合并请求将标记为与此任务相关。在合并请求合并后,任务将自动关闭,除非自动议题关闭被禁用:
前提条件:
- 您必须至少拥有包含任务的项目的开发者角色。
要同时创建分支和合并请求:
- 在左侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 计划 > 议题。
- 在议题列表中,找到您的任务。
- 转到任务描述的底部。
- 选择 创建合并请求。
- 在对话框中,查看建议的分支名称。它基于项目的分支名称模板。
- 可选。如果分支名称已被占用,或者您需要不同的分支名称,请重命名它。
- 选择一个源分支或标签。
- 选择 创建合并请求。
如果您的 Git 仓库为空,极狐GitLab:
- 创建一个默认分支。
- 提交一个空白的 README.md 文件到该分支。
- 创建并重定向您到一个基于议题标题的新分支。
- 如果您的项目配置了部署服务,如 Kubernetes,极狐GitLab 会提示您通过帮助创建 .gitlab-ci.yml 文件来设置自动部署。
如果您创建的分支名称以任务编号为前缀,极狐GitLab 会交叉链接议题和合并请求,并将关闭模式添加到合并请求的描述中。在大多数情况下,这看起来像 Closes #ID,其中 ID 是任务的 ID。如果您的项目配置了关闭模式,任务在合并请求合并时关闭。
从 Web 编辑器中
您可以在 Web 编辑器中执行以下操作时创建合并请求:
当您创建分支时
当您创建分支时,可以创建合并请求。
- 在左侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 代码 > 分支。
- 输入分支名称并选择 新分支。
- 在文件列表上方,选择 创建合并请求。合并请求已创建。默认分支为目标。
- 填写字段并选择 创建合并请求。
当您在 fork 中工作时
您可以从 fork 中创建合并请求,以便回馈主项目。
-
在左侧边栏中,选择 搜索或转到 并找到您的 fork。
-
选择 代码 > 合并请求,并选择 新建合并请求。
-
对于 源分支,选择包含更改的 fork 中的分支。
-
对于 目标分支:
-
选择上游仓库,而不是您的 fork。如果您频繁向上游贡献更改,请考虑为您的 fork 设置一个默认目标。
-
从上游仓库中选择一个分支:

如果您的 fork 的可见性比父仓库更受限,目标分支默认为您的 fork 的默认分支。这可以防止您 fork 中的私人信息潜在暴露。 -
-
选择 比较分支并继续。
-
选择 创建合并请求。合并请求在目标仓库中创建,而不是您的 fork。
-
添加所需的标签、里程碑、审阅者和受理人。
-
选择 提交合并请求。
如果合并请求的目标是另一个仓库,它将使用:
- 目标项目的审批规则。
- 您 fork 的 CI/CD 配置、资源和项目 CI/CD 变量。
要在上游项目中运行 CI/CD 流水线,您必须是该项目的成员。如果您在父项目中运行合并请求流水线在父项目中运行,来自 fork 的合并请求的所有变量将对流水线可用。
在您的工作合并后,如果您不打算进行更多贡献,取消链接您的 fork与其上游仓库。
设置默认目标项目
默认情况下,源自 fork 的合并请求目标为上游仓库,而不是您的 fork。您可以将 fork 仓库配置为默认目标,而不是上游仓库。
前提条件:
- 您正在一个 fork 中工作。
- 您必须至少拥有开发者角色,或者被允许在项目中创建合并请求。
- 上游仓库允许创建合并请求。
- fork 的可见性设置必须匹配或比上游仓库更不严格。例如:如果您的 fork 是私有的,而上游是公开的,则不会显示此设置。
要执行此操作:
- 在左侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 设置 > 合并请求。
- 在 目标项目 部分,选择您要用于默认目标项目的选项。
- 选择 保存更改。
通过发送电子邮件
您可以通过向极狐GitLab 发送电子邮件消息来创建合并请求。合并请求的目标分支是仓库的默认分支。
前提条件:
- 合并请求必须以当前仓库为目标,而不是上游仓库。
- 极狐GitLab 管理员必须配置接收电子邮件。此设置在 JihuLab.com 上启用。
- 极狐GitLab 管理员必须配置通过电子邮件回复。此设置在 JihuLab.com 上启用。
- 您必须至少拥有开发者角色,或者被允许在项目中创建合并请求。
要通过发送电子邮件创建合并请求:
-
在左侧边栏中,选择 搜索或转到 并找到您的项目。
-
选择 代码 > 合并请求。
-
如果项目包含任何合并请求,选择 通过电子邮件发送新的合并请求到此项目。
-
在对话框中,复制显示的电子邮件地址。请将此地址保密。任何拥有该地址的人都可以以您的身份创建议题或合并请求。
-
打开电子邮件并撰写包含以下信息的消息:
- 收件人 行是您复制的电子邮件地址。
- 主题 是源分支名称。
- 电子邮件正文是合并请求描述。
-
要添加提交,请将 .patch 文件附加到消息中。
-
发送电子邮件。
合并请求已创建。
通过电子邮件创建合并请求时添加附件
通过将补丁作为附件添加到电子邮件中来向合并请求添加提交。
- 补丁的总大小必须为 2 MB 或更小。
- 若要被视为补丁,附件的文件名必须以 .patch 结尾。
- 补丁按名称顺序处理。
- 如果主题中的源分支不存在,则从仓库的 HEAD 或默认目标分支创建它。要手动更改目标分支,请使用/target_branch 快速操作。
- 如果源分支已经存在,则补丁会应用到它之上。
故障排除
在议题上没有创建合并请求的选项
如果出现以下情况,议题上不会显示 创建合并请求 选项:
- 已存在同名分支。
- 已经存在一个合并请求用于此分支。
- 您的项目有一个活动的 fork 关系。
- 您的项目是私有的,并且议题是保密的。
要使此按钮出现,一种可能的解决方法是移除项目的 fork 关系。移除后,您无法恢复 fork 关系。您的项目将无法再向源项目或其其他 fork 发送或接收合并请求。
无法处理电子邮件消息
当发送电子邮件以创建合并请求,并尝试以上游仓库为目标时,极狐GitLab 会响应此错误:
plaintextUnfortunately, 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.