合并请求
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
History
- 侧边栏操作菜单已在极狐GitLab 16.0 更改,现在还可用于处理议题、事件和史诗的相关操作。
- 在极狐GitLab 16.9 中 GA。功能标志 moved_mr_sidebar 被移除。
合并请求提供了一个中心位置,方便您的团队审查代码、进行讨论和跟踪代码变更。为了帮助描述更改的原因,您可以将合并请求链接到一个议题,并在合并请求合并后自动关闭该议题。
合并请求帮助确保主题专家审查您的建议更改,并满足您组织的安全要求。当您在开发过程的早期创建合并请求时,您的团队有时间发现错误和代码质量问题。
查看合并请求时,您会看到:
- 请求的描述。
- 代码更改和内联代码审查。
- 关于 CI/CD 流水线的信息。
- 可合并性报告。
- 评论。
- 提交列表。
创建合并请求
了解创建合并请求的各种方法。
使用合并请求模板
当您创建合并请求时,极狐GitLab 会检查是否存在描述模板来向您的合并请求中添加数据。极狐GitLab 按顺序从 1 到 5 检查这些位置,并将找到的第一个模板应用于您的合并请求:
| 名称 | 项目 UI 设置 | 群组 default.md | 实例 default.md | 项目 default.md | 无模板 |
|---|---|---|---|---|---|
| 标准提交消息 | 1 | 2 | 3 | 4 | 5 |
| 带有议题关闭模式的提交消息,如 Closes #1234 | 1 | 2 | 3 | 4 | 5 * |
| 分支名称以议题 ID 为前缀,如 1234-example | 1 * | 2 * | 3 * | 4 * | 5 * |
标记有星号 (*) 的项也附加了议题关闭模式。
查看合并请求
您可以查看您项目、群组或您自己的合并请求。
筛选合并请求列表
History
- 通过 source branch 过滤引入于极狐GitLab 16.6。
- 通过 merged by 过滤引入于极狐GitLab 16.9。仅当启用 mr_merge_user_filter 功能标志时可用。
- 通过 merged by 过滤在极狐GitLab 17.0 中 GA。功能标志 mr_merge_user_filter 被移除。
要筛选合并请求列表:
- 在左侧边栏,选择 搜索或转到 并找到您的项目。
- 选择 代码 > 合并请求。
- 在合并请求列表上方,选择 搜索或筛选结果。
- 从下拉列表中,选择您希望筛选的属性。一些示例:
- 选择或键入用于筛选属性的运算符。可用的运算符包括:
- =: 是
- !=: 不是
- 输入要按属性筛选的文本。您可以通过 无 或 任意 筛选某些属性。
- 重复此过程以按更多属性筛选,并通过逻辑 AND 连接。
- 选择一个 排序方向,可以是 降序,或 升序。
按环境或部署日期
要按部署数据(例如环境或日期)筛选合并请求,您可以键入(或从下拉列表中选择)以下内容:
- 环境
- 部署前
- 部署后
使用 fast-forward merge method 的项目不会返回结果,因为此方法不会创建合并提交。
按环境筛选时,会出现一个下拉列表,您可以从中选择所有可用环境。
按 Deployed before 或 Deployed after 筛选时:
- 日期是指部署到环境(由合并提交触发)成功完成的时间。
- 您必须手动输入部署日期。
- 部署日期使用格式 YYYY-MM-DD。如果要同时指定日期和时间,请用双引号(")将其括起来("YYYY-MM-DD HH:MM")。
向合并请求添加更改
如果您有权限向合并请求添加更改,则可以通过多种方式将更改添加到现有合并请求中。这些方式取决于您更改的复杂性,以及您是否需要访问开发环境:
- 使用浏览器中的 . 键盘快捷键 在 Web IDE 中编辑更改。使用这种基于浏览器的方法可以编辑多个文件,或者如果您不熟悉 Git 命令。您无法从 Web IDE 运行测试。
- 如果您需要一个功能齐全的环境来编辑文件并在之后运行测试,请在 Gitpod 中编辑更改。
- 如果您熟悉 Git 和命令行,请从命令行推送更改。
将用户分配到合并请求
要将合并请求分配给用户,请在合并请求的文本区域中使用 /assign @user 快捷操作,或:
-
在左侧边栏,选择 搜索或转到 并找到您的项目。
-
选择 Code > 合并请求 并找到您的合并请求。
-
在右侧边栏,展开右侧边栏并找到 Assignees 部分。
-
选择 Edit。
-
搜索您想要分配的用户,并选择该用户。极狐GitLab 基础版允许每个合并请求只有一个分配者,但极狐GitLab 专业版和旗舰版允许多个分配者:

极狐GitLab 将合并请求添加到用户的 Assigned 合并请求 页面。
合并合并请求
在合并请求审查流程中,审查者会对您的更改提供反馈。当审查者对更改感到满意时,他们可以启用自动合并,即使某些合并检查失败。一旦所有合并检查通过,合并请求会自动合并,无需您进一步操作。
默认合并权限:
- 默认分支,通常是 main,受到保护。
- 只有维护者及更高角色可以合并到默认分支。
- 开发人员可以合并任何目标为非保护分支的合并请求。
要确定您是否有权限合并特定合并请求,极狐GitLab 会检查:
关闭合并请求
如果您决定永久停止对合并请求的工作,请关闭它而不是删除它。
先决条件:
- 您必须是合并请求的作者或分配者,或
- 您必须在项目中具有开发人员、维护者或所有者角色。
要在项目中关闭合并请求:
- 在左侧边栏,选择 搜索或转到 并找到您的项目。
- 选择 Code > 合并请求 并找到您的合并请求。
- 滚动到页面底部的评论框。
- 在评论框后,选择 Close merge request。
极狐GitLab 关闭合并请求,但保留合并请求的记录、其评论和任何相关的流水线。
在合并时删除源分支
您可以删除合并请求的源分支:
- 在创建合并请求时,选择 当合并请求接受时删除源分支。
- 在合并合并请求时,如果您具有维护者角色,请选择 删除源分支。
管理员可以在项目设置中将此选项设为默认值。
删除分支的操作由设置自动合并或合并合并请求的用户执行。如果用户缺乏正确的角色,例如在分叉项目中,源分支的删除会失败。
当目标分支合并时更新合并请求
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
合并请求通常链接在一起,一个合并请求依赖于另一个合并请求中添加或更改的代码。为了支持保持单个合并请求较小,极狐GitLab 可以在目标分支合并到 main 时更新多达四个未关闭的合并请求。例如:
- 合并请求 1:合并 feature-alpha 到 main。
- 合并请求 2:合并 feature-beta 到 feature-alpha。
如果这些合并请求同时打开,并且合并请求 1 (feature-alpha) 合并到 main,极狐GitLab 会将合并请求 2 的目标从 feature-alpha 更新为 main。
具有互相关联内容更新的合并请求通常通过以下方式之一进行处理:
- 合并请求 1 首先合并到 main。然后合并请求 2 被重新定位到 main。
- 合并请求 2 合并到 feature-alpha。更新后的合并请求 1,现在包含 feature-alpha 和 feature-beta 的内容,合并到 main。
此功能仅在合并请求合并时起作用。选择 移除源分支 后合并不会重新定位未关闭的合并请求。此改进作为后续提议。
合并请求工作流
对于团队中的软件开发人员:
- 您检出一个新分支,并通过合并请求提交更改。
- 您从团队中收集反馈。
- 您使用代码质量报告优化代码的实现。
- 您在极狐GitLab CI/CD 中使用单元测试报告验证更改。
- 您避免使用与项目不兼容的许可证依赖项,通过许可证批准策略。
- 您请求经理的批准。
- 您的经理:
- 您的更改通过极狐GitLab CI/CD 的手动作业部署到生产环境。
- 您的实现成功交付给客户。
对于为公司网站编写网页的 Web 开发人员:
- 您检出一个新分支,并通过合并请求提交新页面。
- 您从审查者那里收集反馈。
- 您通过审查应用预览更改。
- 您请求 Web 设计师的实现。
- 您请求经理的批准。
- 批准后,极狐GitLab:
- 压缩提交。
- 合并提交。
- 通过极狐GitLab Pages 将更改部署到暂存。
- 您的生产团队将合并提交挑选到生产中。
筛选合并请求中的活动
History
- 引入于极狐GitLab 15.11,使用名为 mr_activity_filters 的功能标志。默认禁用。
- 在极狐GitLab 16.0 中,在 JihuLab.com 上启用。
- 在极狐GitLab 16.3 中,在私有化部署上启用。
- 在极狐GitLab 16.5 中 GA。功能标志 mr_activity_filters 被移除。
- 过滤机器人评论引入于极狐GitLab 16.9。
要了解合并请求的历史记录,请筛选其活动提要,以仅显示对您有意义的项目。
-
在左侧边栏,选择 搜索或转到 并找到您的项目。
-
选择 代码 > 合并请求。
-
选择一个合并请求。
-
滚动到 活动。
-
在页面右侧,选择 活动过滤器 以显示筛选选项。如果您已选择筛选选项,则此字段显示您的选择摘要,如 Activity + 5 more。
-
选择您希望看到的活动类型。选项包括:
- 分配者和审查者
- 批准
- 评论(来自机器人)
- 评论(来自用户)
- 提交和分支
- 编辑
- 标签
- 锁定状态
- 提及
- 合并请求状态
- 跟踪
-
可选。选择 排序 (
) 以反转排序顺序。
您的选择在所有合并请求中保持不变。您还可以通过单击右侧的排序按钮更改排序顺序。
解决一个线程
当您想在合并请求中结束对话时,解决一个线程。
极狐GitLab 在合并请求的右上角显示未解决线程的数量,如下所示:7 个未解决线程。
将合并请求中的所有未解决线程移动到议题
如果您在合并请求中有多个未解决的线程,可以创建一个议题单独解决它们:
- 在左侧边栏,选择 搜索或转到 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在合并请求中,在右上角,找到 未解决线程 下拉列表,选择 线程选项 ()。
- 选择 全部通过新议题解决。
- 填写新议题中的字段,并选择 创建议题。
极狐GitLab 将所有线程标记为已解决,并从合并请求添加一个链接到新创建的议题。
将合并请求中的一个未解决线程移动到议题
如果您在合并请求中有一个特定的未解决线程,可以创建一个议题单独解决它:
- 在左侧边栏,选择 搜索或转到 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在合并请求中,找到您要移动的线程。
- 在线程的最后回复下方,选择 解决线程 旁边的 创建议题以解决线程 ()。
- 填写新议题中的字段,并选择 创建议题。
极狐GitLab 将线程标记为已解决,并从合并请求添加一个链接到新创建的议题。
防止合并除非所有线程已解决
您可以防止合并请求在线程未解决时合并。当您启用此设置时,合并请求中的 未解决线程 计数器在至少有一个线程未解决时以橙色显示。
- 在左侧边栏,选择 搜索或转到 并找到您的项目。
- 选择 设置 > 合并请求。
- 在 合并检查 部分,选择 必须解决所有线程 复选框。
- 选择 保存更改。
当线程过时时自动解决合并请求中的线程
您可以设置合并请求,以便在新推送更改了它们描述的行时自动解决线程。
- 在左侧边栏,选择 搜索或转到 并找到您的项目。
- 选择 设置 > 合并请求。
- 在 合并选项 部分,选择 当合并请求差异线程过时时自动解决。
- 选择 保存更改。
现在,如果推送使差异部分过时,则线程会被解决。在线条未更改和顶级可解决线程上的线程不会被解决。
移动通知和待办事项
- Tier: 基础版, 专业版, 旗舰版
- Offering: 私有化部署
History
- 引入于极狐GitLab 15.6,使用名为 notifications_todos_buttons 的功能标志。默认禁用。
- 议题、事件和史诗也进行了更新。
在极狐GitLab 私有化部署上,此功能默认不可用。要使其可用,管理员需要启用名为 notifications_todos_buttons 的功能标志。
启用此功能标志会将通知和待办事项按钮移动到页面的右上角。
- 在合并请求中,这些按钮显示在选项卡的最右侧。
- 在议题、事件和史诗中,这些按钮显示在右侧边栏的顶部。