合并请求中的变更

合并请求提议对仓库中某一分支的文件进行一组变更。这些变更显示为当前状态与提议更改之间的 diff(差异)。默认情况下,差异视图将合并请求源分支中的文件版本,与目标分支中的文件进行比较,并仅显示文件中已更改的部分。

此示例展示了一个文本文件的变更。在默认的语法高亮主题中:

  • current 版本展示为红色,在行前面有个减号 (-)。
  • proposed 版本展示为绿色,在行前面有个加号 (+)。

Example screenshot of a source code diff

差异中的每个文件标头包含:

  • 隐藏文件内容 ( ) 来隐藏此文件的所有变更。
  • 路径: 此文件的完整路径。要拷贝此路径,选择 拷贝文件路径 ( ).
  • 变化的行: 此文件添加的行数以及详情,格式为 +2 -2
  • 可查看的: 选择此勾选框来 将此文件编辑为可查看的直到再次发生变更。
  • 文件上的评论 ( ) 在文件上留下常规评论,无需将评论固定在特定行。
  • 可选: 选择 ( ) 来显示更多文件的可是选项。

差异还包含导航和评论来帮助您离开文件以便:

  • 展示更多内容: 选择 前 20 行 ( ) 来展示前 20 行未变更的行,或 下 20 行 ( ) 来展示下 20 行未变更的行。
  • 行号 展示为两列。之前的行号展示在左侧,提议的行号展示在右侧。要和某一行交互:
    • 要展示评论选项,悬停在行号上。
    • 要拷贝链接到行号,按 Command 并选择(或右击)行号,然后选择 拷贝此地址
    • 要高亮某一行,选择行号即可。

显示变更文件列表

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

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到你的合并请求。
  3. 在合并请求主题下,选择 变更
  4. 选择 显示文件浏览器 ( ) 或按 F 来显示文件树。
    • 对于显示嵌套的树视图,选择 树视图 ( )。
    • 对于显示没有嵌套的视图,选择 列表视图 ( )。

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

要查看合并请求中包含的所有变更:

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 代码 > 合并请求 并找到你的合并请求。
  3. 在合并请求主题下,选择 变更
  4. 如果合并请求变更有很多文件,您可以直接跳转到特定文件:
    1. 选择 显示文件浏览器 ( ) 或按 F 来显示文件树。
    2. 选择您要查看的文件。
    3. 如果要隐藏文件浏览器,选择 显示文件浏览器 或再次按 F

极狐GitLab 会折叠包含大量变更的文件,以提高性能,并显示消息:不会展示有些变更。要查看该文件的变更,请选择 展开文件

首先显示链接文件

  • 引入于极狐GitLab 16.9,使用名为 pinned_file 的功能标志。默认禁用。
  • 在极狐GitLab 17.4 中 GA,pinned_file 功能标志被移除。

当您分享一个合并请求链接给团队成员时,您可能希望显示特定文件在变更文件列表的顶部。要复制一个显示您希望显示的文件的合并请求链接:

  1. 在左侧导航栏,选择 搜索或前往,然后找到您的项目。
  2. 选择 代码 > 合并请求,然后找到您的合并请求。
  3. 在合并请求标题下方,选择 变更
  4. 找到您想要显示的文件,右键点击文件名,然后选复制链接。
  5. 当您访问该链接时,您选择的文件将显示在变更文件列表的顶部。文件浏览器将在文件名称边上显示一个 链接 图标( ):

    A merge request showing a YAML file at the top of the list.

折叠生成的文件

  • 引入于极狐GitLab 16.8,使用名为 collapse_generated_diff_files 的功能标志。默认禁用。
  • 在极狐GitLab 16.10 中为 JihuLab.com 和私有化部署启用。
  • 在极狐GitLab 16.11 中,generated_file 一般可用。功能标志 collapse_generated_diff_files 被移除。

为了帮助审核者聚焦在需要执行代码审核的关键文件上,极狐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 文件不存在于项目根目录,请创建一个空白文件,命名为 .gitattributes
  2. 对于您想要修改的每种文件类型,添加一行到 .gitattributes 文件,声明文件扩展名和您希望的行为:

    # Collapse all files with a .txt extension
    *.txt gitlab-generated
    
    # Collapse all files within the docs directory
    docs/** gitlab-generated
    
    # Do not collapse package-lock.json
    package-lock.json -gitlab-generated
    
  3. 提交、推送并合并到您的默认分支中。

当变更合并到您的默认分支中,所有项目中此类型文件的合并请求将使用此行为。

一次展示一个文件

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

::Tabs

:::TabTitle 在合并请求中

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 代码 > 合并请求,然后找到您的合并请求。
  3. 在合并请求标题下方,选择 更改
  4. 选择 偏好设置 ( )。
  5. 选择或清除 一次展示一个文件

:::TabTitle 在用户偏好设置中

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

::EndTabs

当启用此设置时,要选择其他文件进行查看,您可以:

  • 滚动到文件末尾,然后选择 前一个后一个
  • 如果 键盘快捷键 已启用,按 []kj
  • 选择 文件浏览器( ),然后选择另一个文件。

对比变更

您可以在合并请求中查看变更:

  • 行内,将变更垂直显示。旧版本的行首先显示,新版本的行直接显示在旧版本的下方。行内模式更适合显示单行的变更。
  • 并排,将旧版本和新版本的行分别显示在不同的列中。并排模式更适合显示大量连续行的变更。

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

  1. 在左侧导航栏,选择 搜索或前往,然后找到您的项目。
  2. 选择 代码 > 合并请求,然后找到您的合并请求。
  3. 在合并请求标题下方,选择 变更
  4. 选择 偏好设置( )。选择 行内并排。此示例展示了行内和并排模式下相同的变更:

    ::Tabs

    :::TabTitle 行内变更

    inline changes

    :::TabTitle 并排变更

    side-by-side changes

    ::EndTabs

展开或折叠评论

当审核代码变更时,您可以隐藏行内评论:

  1. 在左侧导航栏,选择 搜索或前往,然后找到您的项目。
  2. 选择 代码 > 合并请求,然后找到您的合并请求。
  3. 在合并请求标题下方,选择 变更
  4. 滚动到您想要隐藏评论的文件。
  5. 滚动到您想要隐藏评论的行,然后选择 折叠( )。

    collapse a comment

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

  1. 在左侧导航栏,选择 搜索或前往,然后找到您的项目。
  2. 选择 代码 > 合并请求,然后找到您的合并请求。
  3. 在合并请求标题下方,选择 变更
  4. 滚动到您想要展开评论的文件。
  5. 滚动到您想要展开评论的行,然后选择 展开( )。

    expand a comment

忽略空白变更

空白变更让查看实质性变更变得更加困难。您可以选择隐藏或显示空白变更:

  1. 在左侧导航栏,选择 搜索或前往,然后找到您的项目。
  2. 选择 代码 > 合并请求,然后找到您的合并请求。
  3. 在合并请求标题下方,选择 变更
  4. 在变更文件列表前,选择 偏好设置( )。
  5. 选择或清除 显示空白变更

    MR diff

标记文件为已查看

当多次审核一个具有很多文件的合并请求时,您可以忽略哪些已经审核过的文件。要隐藏那些自从上次审核之后未发生变更的文件:

  1. 在左侧导航栏,选择 搜索或前往,然后找到您的项目。
  2. 选择 代码 > 合并请求,然后找到您的合并请求。
  3. 在合并请求标题下方,选择 变更
  4. 在文件的头部,选择 已查看

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

  • 文件内容发生了变更。
  • 您清除了 已查看复选框。

在差异中显示合并请求冲突

  • 在极狐GitLab 15.7 中,为 JihuLab.com 和私有化部署启用。
  • 在极狐GitLab 15.8 中 GA。功能标志 display_merge_conflicts_in_diff 被移除。

要避免展示已经在目标分支上的变更,我们比较合并请求的源分支与目标分支的 HEAD

当源分支和目标分支冲突时,我们会在合并请求差异中显示每个冲突文件的警告:

Example of a conflict alert shown in a merge request diff

在差异中显示扫描器漏洞

您可以在差异中显示扫描器漏洞。详情可查阅:

给合并请求文件添加评论

  • 引入于极狐GitLab 16.1,使用名为 comment_on_files 的功能标志,默认启用。
  • 功能标志在极狐GitLab 16.2 中被移除。

您可以将评论添加到合并请求差异文件中。这些评论会随着文件的重新提交和文件的修改而保留。

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

  1. 在左侧导航栏,选择 搜索或前往,然后找到您的项目。
  2. 选择 代码 > 合并请求,然后找到您的合并请求。
  3. 选择 变更
  4. 在您想要添加评论的文件的标题旁边,选择 评论( )。

在图像中添加评论

在合并请求和提交详情视图中,您可以给图片添加评论。评论可以是线程。

  1. 悬停在图片上。
  2. 选择您想要添加评论的位置。

极狐GitLab 会在图片上显示一个图标和一个评论字段。