审核合并请求

合并请求是对 GitLab 项目中的文件进行更改的主要方法。通过 创建和提交 合并请求来提出更改。您的团队可以在合并请求上留下 评论,并提出您可以在用户界面中接受的 建议。当团队成员审核您的工作时,他们可以选择接受或拒绝更改。

要审核合并请求,您可以使用以下工具:

查看合并请求的审核状态

要查看合并请求的状态:

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 代码 > 合并请求,并找到您的合并请求。
  3. 选择合并请求的标题以查看它。
  4. 滚动到 合并请求小部件,以查看合并请求的可合并状态和审核状态。例如,缺少必要的批准阻止了此合并请求:

    The merge request widget displays 'All required approvals must be given'.

要查看每个审核者的单独审核状态,请检查右侧边栏的合并请求。每个 审核者 显示在用户名称的右侧:

  • 用户的审核正在进行
  • 用户已批准
  • {Comment templates} 用户请求了更改,并阻止了此合并请求(如果需要,您可以绕过此阻止)

请求审核

  • 极狐GitLab 17.5 引入了增强的审核员抽屉功能,使用了名名为 reviewer_assign_drawer 的功能标志。
  • 在极狐GitLab 17.5 中为 JihuLab.com 和私有化部署版本启用。

当您完成准备工作后,就可以请求审核了。要将审核员分配给您的合并请求,请使用 /assign_reviewer @user 快速操作 在任何文本字段中,或者:

  1. 在左侧边栏,选择 搜索或前往 并找到您的项目。
  2. 选择 代码 > 合并请求,并找到您的合并请求。
  3. 选择合并请求的标题以查看它。
  4. 在右侧边栏的 审核员 部分:
    • 要按名称查找特定的审核员,选择 编辑
    • 在极狐GitLab 专业版和旗舰版本中,选择 分配 打开审核员抽屉,以查找满足审批规则的审核员。

极狐GitLab 会将合并请求添加到用户的审核请求中。

查找满足审批规则的审核员

极狐GitLab 专业版和旗舰吧会帮助您更快速地找到最合适的审核员。使用 分配审核员 抽屉来筛选审核员列表。查看合并请求中更改的文件的 代码所有者,以及满足项目审批规则的用户。

在此示例中,合并请求需要 3 个代码所有者审批,但目前还没有任何审批:

The Assign Reviewers drawer for a merge request that requires 3 Code Owner approvals, but has none. It shows one line per Code Owner rule, and one line per approval rule. You can select reviewers for each rule.

  1. 要查看可选的审批规则或代码所有者,选择 可选审批规则 ( ) 显示它们。
  2. 在您需要的审核员类型旁,选择 编辑
    • 代码所有者 仅显示该文件类型的代码所有者。
    • 审批规则 仅显示符合该审批规则的用户。
  3. 选择您想要的审核员。(GitLab Premium 和 Ultimate 版本支持选择多个审核员。)
  4. 对每个必需的 代码所有者审批规则 项目重复此操作。
  5. 选择完审核员后,右上角选择 关闭 ( ) 隐藏抽屉。

重新请求审核

在审核员完成他们的 合并请求审核 后,合并请求的作者可以重新请求该审核员进行新一轮审核。
要这样做,可以使用 /request_review @user 快速操作在合并请求的任何文本字段中,或者:

  1. 在左侧边栏,选择 搜索或前往 并找到您的项目。
  2. 选择 代码 > 合并请求,并找到您的合并请求。
  3. 选择合并请求的标题以查看它。
  4. 如果您已折叠合并请求中的右侧边栏,选择 展开边栏 以展开它。
  5. 审核员 部分,选择 重新请求审核 图标 ( ) 以重新请求该审核员进行审核。

GitLab 会为审核员创建一个新的 待办事项,并向他们发送通知邮件。

开始审核

如果有人请求您审核合并请求,请按以下步骤操作:

  1. 您可以:
    • Shift + r 进入您的 审核请求 页面。
    • 在左侧边栏中选择 合并请求 ( ) > 审核请求
  2. 查找您的合并请求,选择合并请求的标题以查看它。
  3. 阅读合并请求的描述和评论,了解合并请求的详细信息。
  4. 选择 更改 以查看提议更改的差异。要了解有关 更改 页面的更多信息,请参见 合并请求中的更改
  5. 根据需要 建议多行或单行更改。如果您选择 开始审核 而不是 立即添加评论,则您的审核评论将在您完成审核之前保持未发布状态。

  6. 在选择 开始审核 后,要添加更多评论,可以从以下地方添加:
    • 更改 标签,包含差异视图。
    • 概述 标签,并选择 添加到审核

    新线程

  7. 选择 提交您的审核 以发布所有通过 开始审核添加到审核 添加的审核评论。在您 提交审核 之前,这些评论保持未发布状态。

使用评论解决或取消解决线程

审核评论还可以解决或取消解决 可解决线程。要在回复评论时解决或取消解决线程:

  1. 在评论文本区域中写下您的评论。
  2. 选择或取消选择 解决线程
  3. 选择 立即添加评论添加到审核

待处理评论会显示有关延迟操作的信息。GitLab 在发布评论之前不会执行这些操作:

  • 线程已解决。
  • 线程保持未解决。

提交审核

提交已完成的审核,您可以:

  • 在非审核评论的文本中使用 /submit_review 快速操作
  • 选择 完成审核,然后在对话框底部选择 提交审核。 在对话框中,您可以提供 摘要评论,批准(或拒绝)合并请求,并包括快速操作:

    完成审核并添加评论

提交审核时,GitLab 会:

  • 发布您审核中的评论。
  • 向每个合并请求的可通知用户发送一封包含您审核评论的电子邮件。回复此电子邮件会在合并请求中创建一个新评论。
  • 执行您添加到审核评论中的任何快速操作。
  • 可选地,显示您是否已批准或请求更改:
    • 评论:留下通用反馈,没有明确的批准。
    • 批准:留下反馈并批准更改。
    • 请求更改:在作者处理您的反馈之前,阻止合并请求合并。

请求更改时防止合并

  • 在极狐GitLab 16.11 中引入了 带有功能标志 mr_reviewer_requests_changes,默认禁用。
  • 在极狐GitLab 17.2 中,默认为 JihuLab.com 和私有化部署版本启用。
  • 在极狐GitLab 17.3 中,已移功能标志 mr_reviewer_requests_changes

当审核员 请求更改 时,合并请求将被阻止合并。此时,合并请求的报告区域会显示消息 更改请求必须完成或解决。 要解除阻止合并请求,提出更改请求的审核员应 重新审核并批准 合并请求。

绕过更改请求

如果请求更改的用户无法重新审核或批准,另一个有权限合并合并请求的用户可以覆盖此检查:

  1. 在左侧边栏,选择 搜索或前往 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 选择合并请求的标题以查看它。
  4. 在合并请求的 概览 页面,滚动到合并请求报告区域。
  5. 更改请求必须完成或解决 旁边,选择 绕过

    因用户请求更改而被阻止的合并请求

  6. 合并请求报告区域显示 谨慎合并:已添加覆盖。要查看用户绕过了哪个检查,选择 展开合并检查 ( ) 并查找包含警告( )图标的检查。在此示例中,作者绕过了 更改请求必须完成或解决

    此合并请求包含一个绕过的检查,应谨慎合并。

下载合并请求更改

作为差异文件(diff)

要将合并请求中的更改下载为差异文件(diff):

  1. 在左侧边栏,选择 搜索或前往 并找到您的项目。
  2. 选择 代码 > 合并请求
  3. 选择您的合并请求。
  4. 在右上角,选择 代码 > 普通差异

如果您知道合并请求的 URL,您也可以通过将 .diff 添加到 URL 来从命令行下载差异文件。例如,下载合并请求 000000 的差异文件:

https://gitlab.com/gitlab-org/gitlab/-/merge_requests/000000.diff

要在一行命令中下载并应用差异文件

curl "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/000000.diff" | git apply

作为补丁文件

要将包含在合并请求中的更改下载为补丁文件:

  1. 在左侧边栏,选择 搜索或前往 并找到您的项目。
  2. 选择 代码 > 合并请求
  3. 选择您的合并请求。
  4. 在右上角,选择 代码 > 补丁

如果您知道合并请求的 URL,请通过将 .patch 添加到 URL 来从命令行下载补丁文件。例如,下载合并请求 000000 的补丁文件:

https://gitlab.com/gitlab-org/gitlab/-/merge_requests/000000.patch

要使用 git am 下载并应用合并请求 000000 的补丁文件

curl "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/000000.patch" | git am

关联功能

合并请求与以下功能相关:

  • cherry-pick 更改: 在 GitLab UI 中,选择 樱桃挑选 以在合并的合并请求或提交中挑选更改。
  • 快进合并请求: 用于线性的 Git 历史记录,并且提供一种接受合并请求而不创建合并提交的方法。
  • 查找引入更改的合并请求: 在查看提交详细信息页面时,GitLab 会链接到包含该提交的合并请求。
  • 合并请求版本: 选择并比较合并请求差异的不同版本。
  • 解决冲突: GitLab 可以提供选项,在 GitLab UI 中解决某些合并请求的冲突。
  • 还原更改: 从任何提交的合并请求中还原更改。
  • 键盘快捷键: 使用键盘命令访问和更改合并请求的特定部分。

相关话题