合并请求中的更改
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
合并请求 提出对代码库中分支文件的一系列更改。GitLab 将这些更改显示为当前状态与提议更改之间的 diff(差异)。默认情况下,diff 会比较您的提议更改(源分支)与目标分支。默认情况下,GitLab 只显示文件的更改部分。
此示例显示了对文本文件的更改。在默认的语法高亮主题中:
- 当前 版本以红色显示,行前有减号 (
-)。 - 提议 版本以绿色显示,行前有加号 (
+)。
diff 中每个文件的头部包含:
- 隐藏文件内容 ( ) 以隐藏对此文件的所有更改。
- 路径:此文件的完整路径。要复制此路径,请选择 复制文件路径 ( )。
- 更改的行数:此文件中添加和删除的行数,格式为
+2 -2。 - 已查看:选中此复选框以将文件标记为已查看 直到文件再次更改。
- 对此文件评论 ( ) 以在文件上留下一般性评论,而不 将评论固定到特定行。
- 选项:选择 ( ) 以显示更多文件查看选项。
diff 还在文件的左侧(gutter)包含导航和评论辅助工具:
- 显示更多上下文:选择 前 20 行 ( ) 以显示 前 20 行未更改的行,或选择 后 20 行 ( ) 以 显示后 20 行未更改的行。
- 行号显示在两列中。左侧显示原始行号,右侧显示提议的行号。要与行交互:
- 要显示评论选项,将鼠标悬停在行号上。
- 要复制行的链接,按 Command 并选择(或右键单击) 行号,然后选择 复制链接地址。
- 要高亮显示行,选择行号。
显示已更改文件列表
使用文件浏览器查看合并请求中已更改的文件列表:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在合并请求标题下方,选择 更改。
- 选择 显示文件浏览器 (
) 或按 F 显示
文件树。
- 要显示嵌套的树状视图,选择 树状视图 ( )。
- 要显示无嵌套的文件列表,选择 列表视图 ( )。
显示合并请求中的所有更改
要查看合并请求中包含的更改 diff:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在合并请求标题下方,选择 更改。
- 如果合并请求更改了许多文件,您可以跳转到特定文件:
- 选择 显示文件浏览器 ( ) 或按 F 显示文件树。
- 选择您要查看的文件。
- 要隐藏文件浏览器,再次选择 显示文件浏览器 或按 F。
GitLab 会折叠包含大量更改的文件以提高性能,并显示消息: 某些更改未显示。要查看该文件的更改,选择 展开文件。
首先显示链接的文件
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com
当您与团队成员共享合并请求链接时,您可能希望在已更改文件列表中首先显示特定文件。要复制显示您首选文件的合并请求链接:
-
在左侧边栏,选择 搜索或跳转 并找到您的项目。
-
选择 代码 > 合并请求 并找到您的合并请求。
-
在合并请求标题下方,选择 更改。
-
找到您要首先显示的文件。右键单击文件名以复制其链接。
-
当您访问该链接时,您选择的文件会显示在列表顶部。文件浏览器 会在文件名旁边显示链接图标 ( ):
折叠生成的文件
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
为了帮助审查人员专注于执行代码审查所需的文件,GitLab 折叠了几种常见类型的生成文件。GitLab 默认折叠这些文件,因为 它们很少需要代码审查:
- 扩展名为
.nib、.xcworkspacedata或.xcurserstate的文件。 - 包锁定文件,如
package-lock.json或Gopkg.lock。 node_modules文件夹中的文件。- 压缩后的
js或css文件。 - 源映射引用文件。
- 生成的 Go 文件,包括协议缓冲区编译器生成的文件。
要将文件或路径标记为生成文件,请在您的 .gitattributes 文件 中为它设置 gitlab-generated 属性。
查看折叠的文件
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在合并请求标题下方,选择 更改。
- 找到您要查看的文件,然后选择 展开文件。
为文件类型配置折叠行为
要更改文件类型的默认折叠行为:
-
如果项目根目录中没有
.gitattributes文件, 请创建一个同名空白文件。 -
对于您要修改的每种文件类型,向
.gitattributes文件添加一行, 声明文件扩展名和您期望的行为:# 折叠所有 .txt 扩展名的文件 *.txt gitlab-generated # 折叠 docs 目录中的所有文件 docs/** gitlab-generated # 不折叠 package-lock.json package-lock.json -gitlab-generated -
提交、推送并将您的更改合并到默认分支。
在更改合并到您的默认分支后, 您项目中该类型的所有文件在合并请求中都会使用此行为。
有关 GitLab 如何检测生成文件的技术细节,请参阅
go-enry 仓库。
一次显示一个文件
对于较大的合并请求,您可以一次查看一个文件。您可以在用户偏好设置中更改此 设置,或者在审查合并请求时更改。如果您在合并请求中更改此设置,它也会更新您的用户设置。
-
在左侧边栏,选择 搜索或跳转 并找到您的项目。
-
选择 代码 > 合并请求 并找到您的合并请求。
-
在合并请求标题下方,选择 更改。
-
选择 偏好设置 ( )。
-
选择或取消选择 一次显示一个文件。
- 在左侧边栏,选择您的头像。
- 选择 偏好设置。
- 滚动到 行为 部分,选择 在合并请求的更改选项卡上一次显示一个文件 复选框。
- 选择 保存更改。
要在启用此设置时选择要查看的另一个文件,可以:
- 滚动到文件末尾并选择 上一个 或 下一个。
- 如果启用了键盘快捷键, 按 [、]、k 或 j。
- 选择 显示文件浏览器 ( ) 并选择另一个文件进行查看。
比较更改
您可以通过以下两种方式查看合并请求中的更改:
- 内联显示,垂直显示更改。行的旧版本显示在 第一行,新版本直接显示在下方。 内联模式通常更适合单行更改。
- 并排显示,在单独的列中显示行的旧版本和新版本。 并排模式通常更适合影响大量连续行的更改。
要更改合并请求显示更改行的方式:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在标题下方,选择 更改。
- 选择 偏好设置 ( )。选择 并排 或 内联。 此示例显示了 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 为您解释代码。
先决条件:
- 您必须属于至少一个启用了 实验和 beta 功能设置 的组。
- 您必须有权查看该项目。
要在合并请求中解释代码:
-
在左侧边栏,选择 搜索或跳转 并找到您的项目。
-
选择 代码 > 合并请求,然后选择您的合并请求。
-
选择 更改。
-
在您想要解释的文件上,选择三个点 ( ) 并选择 查看文件 @ $SHA。
将打开一个单独的浏览器选项卡,显示带有最新更改的完整文件。
-
在新选项卡中,选择您想要解释的行。
-
在左侧,选择问号 ( )。您可能需要滚动到选择的第一行才能看到它。
Duo Chat 会解释代码。生成解释可能需要一些时间。
如果您愿意,您可以对解释的质量提供反馈。
我们不能保证大型语言模型产生正确的结果。请谨慎使用解释。
您还可以在以下位置解释代码:
展开或折叠评论
在审查代码更改时,您可以隐藏内联评论:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在标题下方,选择 更改。
- 滚动到包含您要隐藏的评论的文件。
- 滚动到评论所在的行。在 gutter 边距中,选择 折叠 (
):
要展开内联评论并再次显示它们:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在标题下方,选择 更改。
- 滚动到包含您要显示的已折叠评论的文件。
- 滚动到评论所在的行。在 gutter 边距中,选择用户头像:
忽略空白更改
空白更改会使合并请求中的实质性更改更难看到。您可以选择隐藏或显示空白更改:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在标题下方,选择 更改。
- 在已更改文件列表之前,选择 偏好设置 ( )。
- 选择或取消选择 显示空白更改:
将文件标记为已查看
在多次审查包含许多文件的合并请求时,您可以忽略 已经审查过的文件。要隐藏上次审查后未更改的文件:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 在标题下方,选择 更改。
- 在文件的头部,选择 已查看 复选框。
标记为已查看的文件不会再次显示给您,除非:
- 文件内容发生变化。
- 您取消选择 已查看 复选框。
在 diff 中显示合并请求冲突
为了避免显示已在目标分支上的更改,我们将合并请求的
源分支与目标分支的 HEAD 进行比较。
当源分支和目标分支冲突时,我们在合并请求 diff 中为每个冲突文件显示一个 警报:
在 diff 中显示扫描器结果
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
您可以在 diff 中显示扫描器结果。详细信息,请参阅:
下载合并请求更改
您可以下载合并请求中包含的更改,以便在 GitLab 外部使用。
作为 diff 下载
要将更改下载为 diff:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 选择合并请求。
- 在右上角,选择 代码 > 普通 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作为补丁文件下载
要将更改下载为补丁文件:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 选择合并请求。
- 在右上角,选择 代码 > 补丁。
如果您知道合并请求的 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 amgit am 默认使用 -p1 选项。有关更多信息,请参阅 git-apply。
向合并请求文件添加评论
您可以向合并请求 diff 文件添加评论。这些评论在 变基和文件更改后仍然存在。
要向合并请求文件添加评论:
- 在左侧边栏,选择 搜索或跳转 并找到您的项目。
- 选择 代码 > 合并请求 并找到您的合并请求。
- 选择 更改。
- 在您要评论的文件头部,选择 评论 ( )。
向图像添加评论
在合并请求和提交详情视图中,您可以向图像添加评论。 此评论也可以是一个线程。
- 将鼠标悬停在图像上。
- 选择您要评论的位置。
GitLab 会在图像上显示图标和评论字段。