GitLab教程(13): Issue跟踪与项目管理
GitLab提供了完整的项目管理功能,包括Issue跟踪、看板、里程碑等。本文将详细介绍如何使用这些功能进行项目管理。
创建Issue
# 创建Issue
# Project > Plan > Issues > New issue
Title: 用户登录功能无法使用
Description:
## 问题描述
点击登录按钮后页面无响应。
## 复现步骤
1. 打开登录页面
2. 输入用户名和密码
3. 点击登录按钮
4. 页面没有反应
## 期望行为
应该跳转到首页或显示错误信息。
## 环境信息
- 浏览器: Chrome 120
- 操作系统: Windows 11
## 截图

Type: Issue (默认)
Assignee: @developer
Labels: bug, priority::high
Milestone: v1.0.0
Due date: 2026-02-15
Weight: 3
Issue模板
# 创建Issue模板
# 文件: .gitlab/issue_templates/Bug.md
## 问题描述
## 复现步骤
1.
2.
3.
## 期望行为
## 实际行为
## 环境信息
- 操作系统:
- 浏览器:
- 版本:
## 日志/截图
/label ~bug ~needs-triage
/assign @team-lead
# 功能请求模板
# .gitlab/issue_templates/Feature.md
## 功能描述
## 使用场景
## 实现建议
## 备选方案
/label ~feature ~needs-discussion
标签管理
# 创建标签
# Project > Manage > Labels > New label
# 推荐的标签体系
# 类型标签
bug (红色) # Bug报告
feature (蓝色) # 新功能
enhancement (青色) # 改进
documentation (绿色) # 文档
refactor (紫色) # 重构
# 优先级标签 (作用域标签)
priority::critical (深红) # 紧急
priority::high (红色) # 高
priority::medium (黄色) # 中
priority::low (灰色) # 低
# 状态标签
status::todo (灰色) # 待处理
status::in-progress (蓝色) # 进行中
status::review (黄色) # 审查中
status::done (绿色) # 已完成
# 模块标签
module::frontend # 前端
module::backend # 后端
module::api # API
module::database # 数据库
# 使用作用域标签(::分隔)
# 同一作用域的标签互斥,自动替换
里程碑
# 创建里程碑
# Project > Plan > Milestones > New milestone
Title: v1.0.0
Description: 第一个正式版本发布
Start date: 2026-02-01
Due date: 2026-02-28
# 里程碑进度显示
┌─────────────────────────────────────────────────────────────┐
│ v1.0.0 75% 完成 │
├─────────────────────────────────────────────────────────────┤
│ █████████████████████████░░░░░░░░░░ │
│ │
│ Issues: 12 open, 36 closed │
│ Merge Requests: 2 open, 15 merged │
│ 剩余时间: 5 days │
└─────────────────────────────────────────────────────────────┘
# 在Issue中关联里程碑
# Issue页面右侧 > Milestone > 选择v1.0.0
# 或使用快速命令: /milestone %v1.0.0
看板 (Issue Board)
# 查看看板
# Project > Plan > Issue Boards
# 默认看板布局
┌────────────┬────────────┬────────────┬────────────┐
│ Open │ To Do │ Doing │ Closed │
├────────────┼────────────┼────────────┼────────────┤
│ │ │ │ │
│ ┌────────┐ │ ┌────────┐ │ ┌────────┐ │ ┌────────┐ │
│ │ #42 │ │ │ #38 │ │ │ #35 │ │ │ #30 │ │
│ │ Login │ │ │ API │ │ │ UI Fix │ │ │ Setup │ │
│ │ ~bug │ │ │ ~feat │ │ │ ~bug │ │ │ ~done │ │
│ └────────┘ │ └────────┘ │ └────────┘ │ └────────┘ │
│ │ │ │ │
│ ┌────────┐ │ ┌────────┐ │ │ ┌────────┐ │
│ │ #41 │ │ │ #37 │ │ │ │ #29 │ │
│ │ Error │ │ │ Cache │ │ │ │ Init │ │
│ └────────┘ │ └────────┘ │ │ └────────┘ │
└────────────┴────────────┴────────────┴────────────┘
# 创建自定义看板
# Issue Boards > Create new board
# 添加列表(基于标签或里程碑)
# 点击 "Create list" > 选择标签
# 如: status::todo, status::in-progress, status::review
# 拖拽Issue更改状态
# 拖动Issue卡片到不同列,自动更新标签
快速命令
# 在Issue/MR描述或评论中使用快速命令
# 指派
/assign @username
/assign me
/unassign @username
# 标签
/label ~bug ~priority::high
/unlabel ~needs-triage
/relabel ~confirmed ~priority::critical
# 里程碑
/milestone %v1.0.0
/remove_milestone
# 截止日期
/due 2026-02-15
/remove_due_date
# 时间跟踪
/estimate 2w 3d # 预估2周3天
/spend 4h # 花费4小时
/spend -1h # 减少1小时
# 状态
/close
/reopen
# 关联
/relate #42
/duplicate #43
/move project/path
# 其他
/todo # 添加到待办
/done # 标记待办完成
/subscribe # 订阅通知
/unsubscribe # 取消订阅
/lock # 锁定讨论
/unlock
时间跟踪
# 预估时间
/estimate 2w 3d 4h 30m
# 2周3天4小时30分钟
# 记录花费时间
/spend 4h # 今天花费4小时
/spend 2d @2026-02-01 # 指定日期花费2天
# 时间单位
# m = 分钟
# h = 小时
# d = 天 (默认8小时)
# w = 周 (默认5天)
# mo = 月 (默认4周)
# Issue页面显示
┌─────────────────────────────────────────┐
│ Time tracking │
│ ├── Estimated: 2w 3d │
│ ├── Spent: 1w 2d 4h │
│ └── Remaining: 1w 0d 4h │
└─────────────────────────────────────────┘
# 时间报告
# 查看 Project > Plan > Issues > 导出时间报告
关联与依赖
# 关联Issue
# Issue页面右侧 > Linked issues > Add a related issue
# 关系类型
- relates to: 相关
- blocks: 阻塞
- is blocked by: 被阻塞
# 使用快速命令
/relate #42
/blocks #43
/blocked_by #41
# 在描述中引用
参考 #42
修复了 #43
Duplicate of #44
# 关闭关键字(在MR中使用)
# 合并MR时自动关闭Issue
Closes #42
Fixes #43
Resolves #44
# 跨项目引用
Closes group/project#42
Relates to group/other-project#100
Epic (史诗)
# Epic用于组织大型功能(需要Premium版)
# Group > Epics > New epic
Title: 用户认证系统
Description: 实现完整的用户认证功能
Labels: epic, security
Start date: 2026-02-01
Due date: 2026-03-31
# Epic包含多个Issue
用户认证系统 (Epic)
├── #101 实现登录功能
├── #102 实现注册功能
├── #103 实现密码重置
├── #104 实现双因素认证
└── #105 添加OAuth登录
# 在Issue中关联Epic
# Issue页面 > Epic > 选择Epic
# 或: /epic group/epic-slug&42
# Epic路线图
# Group > Epics > Roadmap
# 以时间线形式展示所有Epic
搜索与过滤
# Issue搜索语法
# 按标签过滤
label:=bug
label:!=closed
# 按指派人过滤
assignee:=@zhangsan
assignee:=none # 未指派
assignee:=any # 已指派
# 按里程碑过滤
milestone:=%v1.0.0
milestone:=%upcoming # 即将到来
milestone:=%started # 已开始
# 按状态过滤
state:=opened
state:=closed
# 按日期过滤
created:>2026-01-01
updated:<2026-02-01
closed:>=2026-01-15
# 组合搜索
label:=bug label:=priority::high assignee:=@me milestone:=%v1.0.0 state:=opened
# 保存搜索为过滤器
# 搜索后点击 "Save as filter"
# 示例过滤器
"My Critical Bugs": label:=bug label:=priority::critical assignee:=me
通知设置
# 个人通知设置
# User Settings > Notifications
# 通知级别
- Global: 使用全局设置
- Watch: 接收所有通知
- On mention: 仅被@时通知
- Participate: 参与的Issue/MR通知
- Disabled: 不接收通知
- Custom: 自定义
# 项目级别通知
# Project > 点击铃铛图标
# 选择通知级别
# 订阅特定Issue
# Issue页面 > 点击 "Subscribe" 按钮
# 或使用 /subscribe 命令
# 邮件通知包含
- Issue创建/更新
- 评论
- 状态变更
- 指派变更
- MR审批请求
最佳实践
- 使用模板:创建Issue和MR模板确保信息完整
- 合理使用标签:建立统一的标签体系
- 关联Issue和MR:使用Closes关键字自动关闭
- 定期更新状态:保持看板和Issue状态最新
- 使用里程碑:按版本或迭代组织工作
- 记录时间:跟踪工作量便于估算
总结
本文介绍了GitLab的Issue跟踪和项目管理功能,包括Issue创建、标签管理、看板、里程碑等。合理使用这些功能可以有效管理项目进度。
下一篇我们将学习GitLab Wiki与文档管理。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







