管理问题
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab 问题帮助你跟踪工作并与团队协作。 你可以管理问题来:
- 编辑标题、描述、指派人和元数据等详细信息。
- 在项目间移动问题,同时保持其上下文和历史记录。
- 关闭已完成的问题,并在需要时重新打开。
- 使用批量编辑来高效更新多个问题。
- 跟踪问题健康状态,以监控进度和识别风险。
编辑问题
你可以编辑问题的标题和描述。
前提条件:
- 你必须至少拥有项目的 Planner 角色,或者是问题的作者,或者是问题的指派人。
要编辑问题:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题标题以查看它。
- 在标题右侧,选择 编辑( )。
- 编辑可用的字段。
- 选择 保存更改。
使用问题描述生成功能填充问题
- Tier: Premium, Ultimate
- Add-on: GitLab Duo Enterprise
- Offering: GitLab.com
- Status: Experiment
- LLM: Anthropic Claude 3.5 Sonnet
- Available on GitLab Duo with self-hosted models: Not supported
根据你提供的简短摘要,为问题生成详细的描述。
前提条件:
- 你必须属于至少一个启用了 实验和测试版功能设置 的组。
- 你必须有权创建问题。
- 仅适用于纯文本编辑器。
- 仅在创建新问题时可用。 有关在编辑现有问题时添加生成描述支持的建议,请参阅 issue 474141。
要生成问题描述:
- 创建一个新问题。
- 在 描述 字段上方,选择 GitLab Duo( )> 生成问题描述。
- 编写简短描述并选择 提交。
问题描述将被 AI 生成的文本替换。
在 issue 409844 中为这个实验功能提供反馈。
数据使用:当你使用此功能时,你输入的文本会发送到 大型语言模型。
从项目中批量编辑问题
当你在项目中时,可以一次编辑多个问题。
前提条件:
- 你必须至少拥有项目的 Planner 角色。
要同时编辑多个问题:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题。
- 选择 批量编辑。屏幕右侧会出现一个边栏。
- 选择你要编辑的每个问题旁边的复选框。
- 从边栏中编辑可用的字段。
- 选择 更新所选。
在项目中批量编辑问题时,可以编辑以下属性:
从组中批量编辑问题
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
当你在组中时,可以跨多个项目编辑多个问题。
前提条件:
- 你必须至少拥有组的 Planner 角色。
要同时编辑多个问题:
- 在左侧边栏,选择 搜索或跳转 并找到你的组。
- 选择 计划 > 问题。
- 选择 批量编辑。屏幕右侧会出现一个边栏。
- 选择你要编辑的每个问题旁边的复选框。
- 从边栏中编辑可用的字段。
- 选择 更新所选。
在组中批量编辑问题时,可以编辑以下属性:
移动问题
当你移动问题时,它会被关闭并复制到目标项目中。 原始问题不会被删除。一个 系统备注 会被添加到两个问题中,指示 它来自哪里以及去了哪里。
将问题移动到具有不同访问规则的项目时要小心。在移动问题之前,确保它不包含敏感数据。
前提条件:
- 你必须至少拥有项目的 Planner 角色。
要移动问题:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题以查看它。
- 在右侧边栏,选择 移动问题。
- 搜索要将问题移动到的项目。
- 选择 移动。
你也可以在评论或描述中使用 /move 快速操作。
移动父问题时移动任务
当你将问题移动到另一个项目时,其所有子任务也会移动到目标项目 并保持为移动后问题的子任务。 每个任务的移动方式与父任务相同,即在原项目中关闭并 复制到目标项目中。
批量移动问题
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed, GitLab Dedicated
从问题页面
当你在项目中时,可以一次移动多个问题。 你不能移动任务或测试用例。
前提条件:
- 你必须至少拥有项目的 Planner 角色。
要同时移动多个问题:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题。
- 选择 批量编辑。屏幕右侧会出现一个边栏。
- 选择你要移动的每个问题旁边的复选框。
- 从右侧边栏,选择 移动所选。
- 从下拉列表中选择目标项目。
- 选择 移动。
从 Rails 控制台
你可以将一个项目中的所有打开的问题移动到另一个项目。
前提条件:
- 你必须有权访问 GitLab 实例的 Rails 控制台。
操作步骤:
-
可选(但推荐)。在尝试控制台中的任何更改之前,创建备份。
-
打开 Rails 控制台。
-
运行以下脚本。确保将
project、admin_user和target_project更改为 你的值。project = Project.find_by_full_path('问题移动来源项目的完整路径') issues = project.issues admin_user = User.find_by_username('管理员用户名') # 确保用户有权限移动问题 target_project = Project.find_by_full_path('问题移动目标项目的完整路径') issues.each do |issue| if issue.state != "closed" && issue.moved_to.nil? Issues::MoveService.new(container: project, current_user: admin_user).execute(issue, target_project) else puts "ID为: #{issue.id} 标题为: #{issue.title} 的问题未被移动" end end; nil -
要退出 Rails 控制台,输入
quit。
描述列表和任务列表
当你在问题描述中使用有序列表、无序列表或任务列表时,你可以:
- 通过拖放重新排序列表项
- 删除列表项
- 将任务列表项转换为 GitLab 任务
删除任务列表项
前提条件:
- 你必须至少拥有项目的 Reporter 角色,或者是问题的作者或指派人。
在包含任务列表项的问题描述中:
- 将鼠标悬停在任务列表项上并选择选项菜单( )。
- 选择 删除。
任务列表项会从问题描述中移除。 任何嵌套的任务列表项都会向上移动一个嵌套级别。
重新排序列表项
当你查看描述中包含列表的问题时,也可以重新排序列表项。
前提条件:
要重新排序列表项,在查看问题时:
- 将鼠标悬停在列表项行上,使抓取图标( )可见。
- 选择并按住抓取图标。
- 将行拖动到列表中的新位置。
- 释放抓取图标。
关闭问题
当你决定问题已解决或不再需要时,可以关闭它。 问题被标记为已关闭但不会被删除。
前提条件:
- 你必须至少拥有项目的 Planner 角色,或者是问题的作者,或者是问题的指派人。
要关闭问题,你可以:
- 在 问题看板 中,将问题卡片从其列表拖动到 已关闭 列表。
- 从 GitLab UI 的任何其他页面:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题以查看它。
- 在右上角,选择 问题操作( )然后选择 关闭问题。
你也可以在评论或描述中使用 /close 快速操作。
重新关闭已关闭的问题
前提条件:
- 你必须至少拥有项目的 Planner 角色,或者是问题的作者,或者是问题的指派人。
要重新打开已关闭的问题,在右上角,选择 问题操作( )然后选择 重新打开问题。 重新打开的问题与任何其他打开的问题没有区别。
你也可以在评论或描述中使用 /reopen 快速操作。
自动关闭问题
你可以通过在提交消息或合并请求描述中使用某些词语(称为 关闭模式)来自动关闭问题。 GitLab Self-Managed 管理员可以 更改默认关闭模式。
如果提交消息或合并请求描述包含与 关闭模式 匹配的文本,当以下任一情况发生时, 匹配文本中引用的所有问题都会被关闭:
- 提交被推送到项目的 默认 分支。
- 提交或合并请求被合并到默认分支。
例如,如果你在合并请求描述中包含 Closes #4, #6, Related to #5:
- 问题
#4和#6在 MR 合并时自动关闭。 - 问题
#5被标记为 相关问题,但不会自动关闭。
或者,当你 从问题创建合并请求 时, 它会继承问题的里程碑和标签。
出于性能原因,对现有仓库的第一次推送会禁用自动问题关闭功能。
合并时的用户责任
当你合并合并请求时,你有责任检查任何目标问题关闭是否合适。 用户可以在合并请求描述中包含问题关闭模式,也可以在提交消息正文中包含。 提交消息中的关闭消息很容易被忽略。在这两种情况下,合并请求小部件都会显示 关于合并时将关闭问题的信息:
当你合并合并请求时,GitLab 会检查你是否有权关闭目标问题。 在公共仓库中,此检查很重要,因为外部用户可以创建包含关闭模式的合并请求和提交。 当你作为合并用户时,重要的是你要意识到合并对项目中代码和问题的影响。
当为合并请求启用 自动合并 时,无法再对将自动关闭的问题列表进行更改。
默认关闭模式
要自动关闭问题,使用以下关键词后跟问题引用。
可用关键词:
Close,Closes,Closed,Closing,close,closes,closed,closingFix,Fixes,Fixed,Fixing,fix,fixes,fixed,fixingResolve,Resolves,Resolved,Resolving,resolve,resolves,resolved,resolvingImplement,Implements,Implemented,Implementing,implement,implements,implemented,implementing
可用问题引用格式:
- 本地问题(
#123)。 - 跨项目问题(
group/project#123)。 - 问题的完整 URL(
https://gitlab.example.com/<project_full_path>/-/issues/123)。 - 工作项的完整 URL(例如,任务、目标或关键结果):
- 在项目中(
https://gitlab.example.com/<project_full_path>/-/work_items/123)。 - 在组中(
https://gitlab.example.com/groups/<group_full_path>/-/work_items/123)。
- 在项目中(
例如:
很棒的提交消息
修复 #20,修复 #21 并关闭 group/otherproject#22。
此提交还与 #17 相关,并修复了 #18、#19
以及 https://gitlab.example.com/group/otherproject/-/issues/23。上面的提交消息关闭了提交推送到的项目中的 #18、#19、#20 和 #21,
以及 group/otherproject 中的 #22 和 #23。#17 没有被关闭,因为它不
匹配模式。
你可以在多行提交消息或命令行中使用 git commit -m 完成的一行提交中使用关闭模式。
默认问题关闭模式正则表达式:
\b((?:[Cc]los(?:e[sd]?|ing)|\b[Ff]ix(?:e[sd]|ing)?|\b[Rr]esolv(?:e[sd]?|ing)|\b[Ii]mplement(?:s|ed|ing)?)(:?) +(?:(?:issues? +)?%{issue_ref}(?:(?: *,? +and +| *,? *)?)|([A-Z][A-Z0-9_]+-\d+))+)禁用自动问题关闭
你可以在每个项目的基础上禁用自动问题关闭功能 在 项目设置 中。
前提条件:
- 你必须至少拥有项目的 Maintainer 角色。
要禁用自动问题关闭:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 设置 > 仓库。
- 展开 分支默认值。
- 清除 在默认分支上自动关闭引用问题 复选框。
- 选择 保存更改。
引用问题仍然显示,但不会自动关闭。
更改此设置仅适用于新的合并请求或提交。已 关闭的问题保持不变。 禁用自动问题关闭仅适用于禁用了该设置的项目中的问题。 此项目中的合并请求和提交仍然可以关闭另一个项目的问题。
自定义问题关闭模式
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed, GitLab Dedicated
前提条件:
- 你必须拥有对 GitLab 实例的 管理员访问权限。
了解如何更改安装的默认 问题关闭模式。
防止用"阅读更多"截断描述
如果问题描述很长,GitLab 只显示其中一部分。 要查看完整描述,你必须选择 阅读更多。 这种截断使你无需滚动长文本即可轻松找到页面上的其他元素。
前提条件:
- 必须启用 问题的新外观。
要更改是否截断描述:
- 在问题上,在右上角,选择 更多操作( )。
- 根据你的偏好切换 截断描述。
此设置会被记住,并影响所有问题、任务、史诗、目标和关键结果。
隐藏右侧边栏
当空间允许时,问题属性显示在描述右侧的边栏中。
前提条件:
- 必须启用 问题的新外观。
要隐藏边栏并为描述增加空间:
- 在问题上,在右上角,选择 更多操作( )。
- 选择 隐藏边栏。
此设置会被记住,并影响所有问题、任务、史诗、目标和关键结果。
要再次显示边栏:
- 重复前面的步骤并选择 显示边栏。
更改问题类型
前提条件:
- 你必须是问题作者,或者至少拥有项目的 Planner 角色,或者是问题的作者,或者是问题的指派人。
要更改问题类型:
-
在左侧边栏,选择 搜索或跳转 并找到你的项目。
-
选择 计划 > 问题,然后选择你的问题以查看它。
-
在标题右侧,选择 编辑标题和描述( )。
-
编辑问题并从 问题类型 下拉列表中选择一个问题类型:
- 问题
- 事件
-
选择 保存更改。
删除问题
前提条件:
- 你必须拥有项目的 Planner 或 Owner 角色。
要删除问题:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题以查看它。
- 在右上角,选择 问题操作( )。
- 选择 删除问题。
或者:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题标题以查看它。
- 选择 编辑标题和描述( )。
- 选择 删除问题。
将问题提升为史诗
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
你可以将问题提升为 史诗 在其直接父组中。
将保密问题提升为史诗会创建一个 保密史诗,保持 保密性。
当问题被提升为史诗时:
- 在与问题项目相同的组中创建一个史诗。
- 问题的订阅者会收到史诗已创建的通知。
以下问题元数据会被复制到史诗中:
- 标题、描述、活动和评论线程。
- 点赞和点踩。
- 参与者。
- 问题所在的组标签。
- 父史诗。
前提条件:
- 问题所属的项目必须在组中。
- 你必须至少拥有项目直接父组的 Planner 角色。
- 你必须:
- 至少拥有项目的 Planner 角色。
- 是问题的作者。
- 是问题的指派人。
要将问题提升为史诗:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题以查看它。
- 在右上角,选择 问题操作( )。
- 选择 提升为史诗。
或者,你可以使用 /promote 快速操作。
将问题提升为事件
你可以使用 /promote_to_incident 快速操作 将问题提升为 事件。
将问题添加到迭代
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
要将问题添加到 迭代:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题以查看它。
- 在右侧边栏的 迭代 部分,选择 编辑。
- 从下拉列表中选择要将此问题添加到的迭代。
- 选择下拉列表外的任何区域。
要将问题添加到迭代,你还可以:
- 使用
/iteration快速操作 - 在看板中将问题拖动到迭代列表中
- 从问题列表批量编辑问题
查看所有分配给你的问题
要查看所有分配给你的问题:
- 在左侧边栏,选择 搜索或跳转。
- 从下拉列表中选择 分配给我的问题。
或者:
- 要使用 键盘快捷键,按 Shift + i。
- 在左侧边栏顶部,选择 分配的问题( )。
问题列表
问题列表显示你项目或组中的所有问题。 你可以用它来查看、排序和管理问题。
要查看问题列表:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题。
从问题列表中,你可以:
- 查看标题、指派人、标签和里程碑等问题的详细信息。
- 按各种条件排序问题。
- 过滤问题以找到特定问题。
- 单独或批量编辑问题。
- 创建新问题。
以下部分描述如何使用问题列表。
过滤问题列表
要过滤问题列表:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题。
- 在问题列表上方,选择 搜索或过滤结果。
- 在出现的下拉列表中,选择你要过滤的属性。
- 选择或输入用于过滤属性的操作符。以下操作符可用:
=: 是!=: 不是
- 输入用于过滤属性的文本。 你可以按 无 或 任意 过滤某些属性。
- 重复此过程以按多个属性过滤。多个属性通过逻辑
AND连接。
按标题或描述过滤
要过滤标题或描述中包含文本的问题列表:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题。
- 在问题列表上方,在 搜索或过滤结果 文本框中输入搜索短语。
- 在出现的下拉列表中,选择 在…中搜索,然后选择 标题 或 描述。
- 按 Enter 或选择搜索图标( )。
过滤问题使用 PostgreSQL 全文搜索 来匹配有意义和重要的单词以回答查询。
例如,如果你搜索 I am securing information for M&A,
GitLab 可以返回标题或描述中包含 securing、secured
或 information 的结果。
但是,GitLab 不完全匹配句子或单词 I、am 或 M&A,
因为它们不被认为在词汇上有意义或重要。
这是 PostgreSQL 全文搜索的限制。
使用 OR 操作符过滤
当你按以下条件 过滤问题列表 时,可以使用 OR 操作符(是其中之一:||):
- 指派人
- 作者
- 标签
是其中之一 表示包含性 OR。例如,如果你过滤 指派人是 Sidney Jones 和
指派人是 Zhang Wei,GitLab 会显示问题,其中 Sidney、Zhang 或两者都是指派人。
按 ID 过滤问题
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题。
- 在 搜索 框中,输入
#后跟问题 ID。例如,输入过滤器#10以仅返回问题 10。
在抽屉中打开问题
- Offering: GitLab Self-Managed
此功能的可用性由功能标志控制。 有关更多信息,请参阅历史记录。
启用此功能时,当你从列表或问题看板中选择问题时,它会在抽屉中打开。 然后你可以编辑问题或创建评论。
要在完整视图中打开问题:
- 在新选项卡中打开问题。从问题列表中,要么:
- 右键单击问题并在新浏览器选项卡中打开。
- 按住 Cmd 或 Ctrl 并单击问题。
- 从抽屉中,在左上角选择 在完整视图中打开。
复制问题引用
要在 GitLab 的其他地方引用问题,你可以使用其完整 URL 或简短引用,看起来像
namespace/project-name#123,其中 namespace 是组或用户名。
要将问题引用复制到剪贴板:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题以查看它。
- 在右侧边栏,引用 旁边,选择 复制引用( )。
现在你可以将引用粘贴到另一个描述或评论中。
有关问题引用的更多信息,请参阅 GitLab 风格 Markdown。
复制问题电子邮件地址
你可以通过发送电子邮件在问题中创建评论。 向此地址发送电子邮件会创建一个包含邮件正文的评论。
有关通过发送电子邮件创建评论和必要配置的更多信息,请参阅 通过发送电子邮件回复评论。
要复制问题的电子邮件地址:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题以查看它。
- 在右侧边栏,问题电子邮件 旁边,选择 复制引用( )。
指派人
一个问题可以分配给一个或 多个用户。
指派人可以根据需要频繁更改。指派人的理念是 他们负责该问题。 当问题被分配给某人时,它会出现在他们的 分配的问题 页面中。
如果用户不是项目成员,只有在他们自己创建问题或 其他项目成员分配给他们时,才能将问题分配给他们。
更改问题的指派人
前提条件:
- 你必须至少拥有项目的 Planner 角色。
要更改问题的指派人:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题以查看它。
- 在右侧边栏的 指派人 部分,选择 编辑。
- 从下拉列表中选择要添加为指派人的用户。
- 选择下拉列表外的任何区域。
指派人更改无需刷新页面即可完成。
相似问题
为防止同一主题的问题重复,GitLab 在你创建新问题时会搜索相似问题。
当你在 新问题 页面的标题文本框中输入时,GitLab 会搜索当前项目中所有问题的标题和描述。 只返回你有权限访问的问题。 标题文本框下方会显示最多五个相似问题,按最近更新时间排序。
健康状态
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
为了更好地跟踪满足计划的风险,你可以为每个问题分配健康状态。 你可以使用健康状态向组织中的其他人传达问题是按计划进行还是需要关注以保持进度。
将问题健康状态的审查纳入你的每日站会、项目状态报告或周会中,以解决及时交付计划工作的风险。
更改问题的健康状态
前提条件:
- 你必须至少拥有项目的 Planner 角色。
要编辑问题的健康状态:
-
在左侧边栏,选择 搜索或跳转 并找到你的项目。
-
选择 计划 > 问题,然后选择你的问题以查看它。
-
在右侧边栏的 健康状态 部分,选择 编辑。
-
从下拉列表中选择要添加到此问题的状态:
- 按计划进行(绿色)
- 需要关注(琥珀色)
- 有风险(红色)
你可以在以下位置看到问题的健康状态:
- 问题 页面
- 史诗树
- 问题看板中的问题卡片
问题关闭后,其健康状态无法编辑,编辑 按钮将变为禁用 直到问题重新打开。
你也可以使用 /health_status 和 /clear_health_status
快速操作 设置和清除健康状态。
状态
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
此功能的可用性由功能标志控制。 有关更多信息,请参阅历史记录。
你可以为问题分配状态以跟踪它们在你的工作流程中的进展。 状态提供比基本的打开/关闭状态更细粒度的跟踪,因此你可以使用特定的 阶段,如 进行中、已完成 或 不做。
有关状态的更多信息,包括如何配置自定义状态,请参阅 状态。
更改状态
前提条件:
- 你必须至少拥有项目的 Planner 角色,或者是问题的作者,或者是问题的指派人。
要更改问题的状态:
- 在左侧边栏,选择 搜索或跳转 并找到你的项目。
- 选择 计划 > 问题,然后选择你的问题以查看它。
- 在右侧边栏的 状态 部分,选择 编辑。
- 从下拉列表中选择状态。
问题的状态会立即更新。
你可以在以下位置看到问题的状态:
- 问题 页面
- 史诗的 子项 部分
- 问题看板中的卡片
你也可以使用 /status 快速操作 设置状态。
发布问题
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
如果状态页应用程序与项目关联,你可以使用 /publish
快速操作 发布问题。
有关更多信息,请参阅 GitLab 状态页。
问题相关快速操作
你也可以使用 快速操作 来管理问题。
某些操作还没有对应的 UI 按钮。 你只能通过使用快速操作来执行以下操作:
- 添加或删除 Zoom 会议(
/zoom和/remove_zoom)。 - 发布问题(
/publish)。 - 将问题克隆到相同或另一个项目(
/clone)。 - 关闭问题并将其标记为另一个问题的重复(
/duplicate)。 - 从项目中的另一个合并请求或问题复制标签和里程碑(
/copy_metadata)。