Help us learn about your current experience with the documentation. Take the survey.

合并请求中的更改

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

合并请求 提出对代码库中分支文件的一系列更改。GitLab 将这些更改显示为当前状态与提议更改之间的 diff(差异)。默认情况下,diff 会比较您的提议更改(源分支)与目标分支。默认情况下,GitLab 只显示文件的更改部分。

此示例显示了对文本文件的更改。在默认的语法高亮主题中:

  • 当前 版本以红色显示,行前有减号 (-)。
  • 提议 版本以绿色显示,行前有加号 (+)。

源代码 diff 示例截图

diff 中每个文件的头部包含:

  • 隐藏文件内容 ( chevron-down ) 以隐藏对此文件的所有更改。
  • 路径:此文件的完整路径。要复制此路径,请选择 复制文件路径 ( copy-to-clipboard )。
  • 更改的行数:此文件中添加和删除的行数,格式为 +2 -2
  • 已查看:选中此复选框以将文件标记为已查看 直到文件再次更改。
  • 对此文件评论 ( comment ) 以在文件上留下一般性评论,而不 将评论固定到特定行。
  • 选项:选择 ( ellipsis_v ) 以显示更多文件查看选项。

diff 还在文件的左侧(gutter)包含导航和评论辅助工具:

  • 显示更多上下文:选择 前 20 行 ( expand-up ) 以显示 前 20 行未更改的行,或选择 后 20 行 ( expand-down ) 以 显示后 20 行未更改的行。
  • 行号显示在两列中。左侧显示原始行号,右侧显示提议的行号。要与行交互:
    • 要显示评论选项,将鼠标悬停在行号上。
    • 要复制行的链接,按 Command 并选择(或右键单击) 行号,然后选择 复制链接地址
    • 要高亮显示行,选择行号。

显示已更改文件列表

使用文件浏览器查看合并请求中已更改的文件列表:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 在合并请求标题下方,选择 更改
  4. 选择 显示文件浏览器 ( file-tree ) 或按 F 显示 文件树。
    • 要显示嵌套的树状视图,选择 树状视图 ( file-tree )。
    • 要显示无嵌套的文件列表,选择 列表视图 ( list-bulleted )。

显示合并请求中的所有更改

要查看合并请求中包含的更改 diff:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 在合并请求标题下方,选择 更改
  4. 如果合并请求更改了许多文件,您可以跳转到特定文件:
    1. 选择 显示文件浏览器 ( file-tree ) 或按 F 显示文件树。
    2. 选择您要查看的文件。
    3. 要隐藏文件浏览器,再次选择 显示文件浏览器 或按 F

GitLab 会折叠包含大量更改的文件以提高性能,并显示消息: 某些更改未显示。要查看该文件的更改,选择 展开文件

首先显示链接的文件

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com

当您与团队成员共享合并请求链接时,您可能希望在已更改文件列表中首先显示特定文件。要复制显示您首选文件的合并请求链接:

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

  2. 选择 代码 > 合并请求 并找到您的合并请求。

  3. 在合并请求标题下方,选择 更改

  4. 找到您要首先显示的文件。右键单击文件名以复制其链接。

  5. 当您访问该链接时,您选择的文件会显示在列表顶部。文件浏览器 会在文件名旁边显示链接图标 ( link ):

    显示 YAML 文件在列表顶部的合并请求

折叠生成的文件

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

为了帮助审查人员专注于执行代码审查所需的文件,GitLab 折叠了几种常见类型的生成文件。GitLab 默认折叠这些文件,因为 它们很少需要代码审查:

  1. 扩展名为 .nib.xcworkspacedata.xcurserstate 的文件。
  2. 包锁定文件,如 package-lock.jsonGopkg.lock
  3. node_modules 文件夹中的文件。
  4. 压缩后的 jscss 文件。
  5. 源映射引用文件。
  6. 生成的 Go 文件,包括协议缓冲区编译器生成的文件。

要将文件或路径标记为生成文件,请在您的 .gitattributes 文件 中为它设置 gitlab-generated 属性。

查看折叠的文件

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 在合并请求标题下方,选择 更改
  4. 找到您要查看的文件,然后选择 展开文件

为文件类型配置折叠行为

要更改文件类型的默认折叠行为:

  1. 如果项目根目录中没有 .gitattributes 文件, 请创建一个同名空白文件。

  2. 对于您要修改的每种文件类型,向 .gitattributes 文件添加一行, 声明文件扩展名和您期望的行为:

    # 折叠所有 .txt 扩展名的文件
    *.txt gitlab-generated
    
    # 折叠 docs 目录中的所有文件
    docs/** gitlab-generated
    
    # 不折叠 package-lock.json
    package-lock.json -gitlab-generated
  3. 提交、推送并将您的更改合并到默认分支。

在更改合并到您的默认分支后, 您项目中该类型的所有文件在合并请求中都会使用此行为。

有关 GitLab 如何检测生成文件的技术细节,请参阅 go-enry 仓库。

一次显示一个文件

对于较大的合并请求,您可以一次查看一个文件。您可以在用户偏好设置中更改此 设置,或者在审查合并请求时更改。如果您在合并请求中更改此设置,它也会更新您的用户设置。

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

  2. 选择 代码 > 合并请求 并找到您的合并请求。

  3. 在合并请求标题下方,选择 更改

  4. 选择 偏好设置 ( preferences )。

  5. 选择或取消选择 一次显示一个文件

  1. 在左侧边栏,选择您的头像。
  2. 选择 偏好设置
  3. 滚动到 行为 部分,选择 在合并请求的更改选项卡上一次显示一个文件 复选框。
  4. 选择 保存更改

要在启用此设置时选择要查看的另一个文件,可以:

  • 滚动到文件末尾并选择 上一个下一个
  • 如果启用了键盘快捷键, 按 []kj
  • 选择 显示文件浏览器 ( file-tree ) 并选择另一个文件进行查看。

比较更改

您可以通过以下两种方式查看合并请求中的更改:

  • 内联显示,垂直显示更改。行的旧版本显示在 第一行,新版本直接显示在下方。 内联模式通常更适合单行更改。
  • 并排显示,在单独的列中显示行的旧版本和新版本。 并排模式通常更适合影响大量连续行的更改。

要更改合并请求显示更改行的方式:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 在标题下方,选择 更改
  4. 选择 偏好设置 ( preferences )。选择 并排内联。 此示例显示了 GitLab 如何在内联和并排模式下呈现相同的更改:

在合并请求中解释代码

  • Tier: Premium, Ultimate
  • 插件:GitLab Duo Pro 或 Enterprise、GitLab Duo with Amazon Q
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
  • GitLab Self-Managed、GitLab Dedicated 的 LLM:Anthropic [Claude 3.5 Sonnet](https: //console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-5-sonnet)
  • GitLab.com 的 LLM:Anthropic [Claude 3.7 Sonnet](https: //console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-7-sonnet)
  • Amazon Q 的 LLM:Amazon Q Developer

如果您花费大量时间尝试理解他人创建的代码,或者 难以理解用您不熟悉的语言编写的代码, 您可以要求 GitLab Duo 为您解释代码。

先决条件:

要在合并请求中解释代码:

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

  2. 选择 代码 > 合并请求,然后选择您的合并请求。

  3. 选择 更改

  4. 在您想要解释的文件上,选择三个点 ( ellipsis_v ) 并选择 查看文件 @ $SHA

    将打开一个单独的浏览器选项卡,显示带有最新更改的完整文件。

  5. 在新选项卡中,选择您想要解释的行。

  6. 在左侧,选择问号 ( question )。您可能需要滚动到选择的第一行才能看到它。

    在合并请求中解释代码

Duo Chat 会解释代码。生成解释可能需要一些时间。

如果您愿意,您可以对解释的质量提供反馈。

我们不能保证大型语言模型产生正确的结果。请谨慎使用解释。

您还可以在以下位置解释代码:

展开或折叠评论

在审查代码更改时,您可以隐藏内联评论:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 在标题下方,选择 更改
  4. 滚动到包含您要隐藏的评论的文件。
  5. 滚动到评论所在的行。在 gutter 边距中,选择 折叠 ( collapse ): 折叠评论

要展开内联评论并再次显示它们:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 在标题下方,选择 更改
  4. 滚动到包含您要显示的已折叠评论的文件。
  5. 滚动到评论所在的行。在 gutter 边距中,选择用户头像: 展开评论

忽略空白更改

空白更改会使合并请求中的实质性更改更难看到。您可以选择隐藏或显示空白更改:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 在标题下方,选择 更改
  4. 在已更改文件列表之前,选择 偏好设置 ( preferences )。
  5. 选择或取消选择 显示空白更改

展开偏好设置菜单的合并请求 diff

将文件标记为已查看

在多次审查包含许多文件的合并请求时,您可以忽略 已经审查过的文件。要隐藏上次审查后未更改的文件:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 在标题下方,选择 更改
  4. 在文件的头部,选择 已查看 复选框。

标记为已查看的文件不会再次显示给您,除非:

  • 文件内容发生变化。
  • 您取消选择 已查看 复选框。

在 diff 中显示合并请求冲突

为了避免显示已在目标分支上的更改,我们将合并请求的 源分支与目标分支的 HEAD 进行比较。

当源分支和目标分支冲突时,我们在合并请求 diff 中为每个冲突文件显示一个 警报:

合并请求 diff 中显示的冲突警报示例

在 diff 中显示扫描器结果

  • Tier: Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

您可以在 diff 中显示扫描器结果。详细信息,请参阅:

下载合并请求更改

您可以下载合并请求中包含的更改,以便在 GitLab 外部使用。

作为 diff 下载

要将更改下载为 diff:

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

如果您知道合并请求的 URL,您还可以通过在 URL 后附加 .diff 从 命令行下载 diff。此示例下载合并请求 000000 的 diff:

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

要在一行 CLI 命令中下载并应用 diff:

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

作为补丁文件下载

要将更改下载为补丁文件:

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

如果您知道合并请求的 URL,您还可以通过在 URL 后附加 .patch 从 命令行下载补丁。此示例下载合并请求 000000 的补丁文件:

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

要使用 git am 下载并应用补丁:

# 下载并预览补丁
curl "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/000000.patch" > changes.patch
git apply --check changes.patch

# 应用补丁
git am changes.patch

您还可以在单个命令中下载并应用补丁:

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

git am 默认使用 -p1 选项。有关更多信息,请参阅 git-apply

向合并请求文件添加评论

您可以向合并请求 diff 文件添加评论。这些评论在 变基和文件更改后仍然存在。

要向合并请求文件添加评论:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到您的合并请求。
  3. 选择 更改
  4. 在您要评论的文件头部,选择 评论 ( comment )。

向图像添加评论

在合并请求和提交详情视图中,您可以向图像添加评论。 此评论也可以是一个线程。

  1. 将鼠标悬停在图像上。
  2. 选择您要评论的位置。

GitLab 会在图像上显示图标和评论字段。

相关主题