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 中创建问题和合并请求的方式。

描述模板:

  • 在项目间为问题和合并请求创建一致的布局。
  • 为不同的工作流程阶段和用途提供专用模板。
  • 支持项目、群组和整个实例的自定义模板。
  • 使用变量和快速操作自动填充字段。
  • 确保对错误、功能和其他工作项的正确跟踪。
  • 格式化服务台邮件回复

您可以定义模板用作以下内容的描述:

项目从其群组和实例继承模板。

模板必须:

  • .md 扩展名保存。
  • 存储在项目仓库的 .gitlab/issue_templates.gitlab/merge_request_templates 目录中。
  • 存在于默认分支上。

创建描述模板

在仓库的 .gitlab/issue_templates/ 目录中创建一个新的 Markdown (.md) 文件作为描述模板。

要创建工作项描述模板:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 仓库
  3. 在默认分支旁边,选择 plus
  4. 选择 新建文件
  5. 在默认分支旁边,在 文件名 文本框中,输入 .gitlab/issue_templates/mytemplate.md, 其中 mytemplate 是您的模板名称。
  6. 提交到您的默认分支。

要检查是否正确工作:

  1. 创建新问题创建新史诗
  2. 查看 选择模板 下拉列表中是否能找到您的描述模板。

创建合并请求模板

与问题模板类似,在仓库的 .gitlab/merge_request_templates/ 目录中创建一个新的 Markdown (.md) 文件。与问题模板不同,合并请求有额外的继承规则,这些规则依赖于提交消息和分支名称的内容。

要为项目创建合并请求描述模板:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
  2. 选择 代码 > 仓库
  3. 在默认分支旁边,选择 plus
  4. 选择 新建文件
  5. 在默认分支旁边,在 文件名 文本框中,输入 .gitlab/merge_request_templates/mytemplate.md, 其中 mytemplate 是您的合并请求模板名称。
  6. 提交到您的默认分支。

要检查是否正确工作,创建新的合并请求, 并查看 选择模板 下拉列表中是否能找到您的描述模板。

使用模板

当您创建或编辑问题或合并请求时,它会显示在 选择模板 下拉列表中。

要应用模板:

  1. 创建或编辑问题、工作项或合并请求。
  2. 选择 选择模板 下拉列表。
  3. 如果 描述 文本框不为空,请确认,然后选择 应用模板
  4. 选择 保存更改

当您选择描述模板时,其内容会被复制到描述文本框中。

要放弃选择模板后对描述所做的任何更改:展开 选择模板 下拉列表并选择 重置模板

在问题中选择描述模板

您可以创建快捷链接来使用指定模板创建问题。 例如:https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Feature%20proposal。了解更多关于使用预填充值的 URL 创建问题的信息。

合并请求模板中支持的变量

此功能仅适用于默认模板

当您第一次保存合并请求时,GitLab 会用这些值替换合并请求模板中的这些变量:

变量 描述 输出示例
%{all_commits} 合并请求中所有提交的消息。限制为最近 100 个提交。跳过超过 100 KiB 的提交正文和合并提交消息。 * 功能引入

此提交实现了功能
变更日志:已添加

* 错误修复

* 文档改进

此提交引入了更好的文档。
%{co_authored_by} 提交作者在 Co-authored-by Git 提交尾行格式中的姓名和邮箱。限制为合并请求中最近 100 个提交的作者。 Co-authored-by: Zane Doe <zdoe@example.com>
Co-authored-by: Blake Smith <bsmith@example.com>
%{first_commit} 合并请求差异中第一个提交的完整消息。 更新 README.md
%{first_multiline_commit} 第一个非合并提交且消息正文有多行的完整消息。如果所有提交都不是多行,则为合并请求标题。 更新 README.md

改进了 readme 文件中的项目描述。
%{first_multiline_commit_description} 第一个非合并提交且消息正文有多行的描述(不包括第一行/标题)。 改进了 readme 文件中的项目描述。
%{source_branch} 正在合并的分支名称。 my-feature-branch
%{target_branch} 应用更改的分支名称。 main

设置实例级描述模板

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

您可以使用实例模板仓库为问题和合并请求设置实例级描述模板。 您也可以使用实例模板仓库作为文件模板。

您可能还对项目模板感兴趣,这些模板可用于在实例中创建新项目。

设置群组级描述模板

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

使用群组级描述模板,您可以选择群组内的一个项目来存储您的模板。然后,您可以在群组中的其他项目中访问这些模板。 因此,您可以在群组所有项目的问题和合并请求中使用相同的模板。

先决条件:

  • 您必须拥有群组的所有者角色。
  • 项目必须是群组的直接子项目。

要重用您已创建的模板

  1. 在左侧边栏,选择 搜索或跳转 并找到您的群组。
  2. 选择 设置 > 常规
  3. 展开 模板
  4. 从下拉列表中,选择您的模板项目作为群组级的模板仓库。
  5. 选择 保存更改

群组模板设置

您可能还对各种群组中的文件类型模板感兴趣。

为合并请求和问题设置默认模板

在项目中,您可以为新问题和合并请求选择默认描述模板。 因此,每次创建新的合并请求或问题时,都会用您在模板中输入的文本预填充。

先决条件:

  • 在项目左侧边栏,选择 设置 > 常规 并展开 可见性、项目功能、权限。 确保问题或合并请求设置为 所有有权限的用户仅项目成员

要为合并请求设置默认描述模板,可以选择:

  • 创建合并请求模板 并命名为 Default.md(不区分大小写) 并将其保存在 .gitlab/merge_request_templates/ 中。 如果已在项目设置中设置了默认模板,这不会覆盖它。

  • GitLab Premium 和 Ultimate 用户:在项目设置中设置默认模板:

    1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
    2. 选择 设置 > 合并请求
    3. 合并请求的默认描述模板 部分,填写文本区域。
    4. 选择 保存更改

要为问题设置默认描述模板,可以选择:

  • 创建问题模板 并命名为 Default.md(不区分大小写) 并将其保存在 .gitlab/issue_templates/ 中。 如果已在项目设置中设置了默认模板,这不会覆盖它。

  • GitLab Premium 和 Ultimate 用户:在项目设置中设置默认模板:

    1. 在左侧边栏,选择 搜索或跳转 并找到您的项目。
    2. 选择 设置 > 常规
    3. 展开 问题的默认描述模板
    4. 填写文本区域。
    5. 选择 保存更改

由于 GitLab 合并请求和问题支持 Markdown,您可以使用它来格式化 标题、列表等。

您还可以在项目 REST API中提供 issues_templatemerge_requests_template 属性, 以保持您默认的问题和合并请求模板为最新。

默认描述模板的优先级

当您在不同位置设置问题描述模板时, 它们在项目中有以下优先级。较高的会覆盖较低的:

  1. 在项目设置中设置的模板。
  2. 来自父群组的 Default.md(不区分大小写)。
  3. 来自项目仓库的 Default.md(不区分大小写)。

合并请求有额外的继承规则,这些规则依赖于提交消息和分支名称的内容。

示例描述模板

我们使用 GitLab 项目 .gitlab 文件夹中的问题和合并请求描述模板,您可以参考这些模板获取一些示例。

可以在描述模板中使用快速操作来快速添加标签、指派人和里程碑。只有提交问题或合并请求的用户具有执行相关操作的权限时,才会执行快速操作。

以下是一个错误报告模板的示例:

## 概要

<!-- HTML 注释不会显示 -->
(简洁地总结遇到的错误)

## 复现步骤

(如何复现此问题 - 这非常重要)

## 示例项目

(如果可能,在 GitLab.com 上创建一个展示问题行为的示例项目,并在错误报告中链接到此。
如果您使用的是旧版本的 GitLab,这也将确定该错误是否已在更新的版本中修复)

## 当前错误行为是什么?

(实际发生的情况)

## 期望的正确行为是什么?

(您应该看到的情况)

## 相关日志和/或截图

(粘贴任何相关日志 - 使用代码块(```)来格式化控制台输出、日志和代码,否则很难阅读。)

## 可能的修复

(如果可以,链接到可能负责问题的代码行)

/label ~bug ~reproduced ~needs-investigation
/cc @project-manager
/assign @qa-tester