GitLab教程(13): Issue跟踪与项目管理

GitLab提供了完整的项目管理功能,包括Issue跟踪、看板、里程碑等。本文将详细介绍如何使用这些功能进行项目管理。

创建Issue

# 创建Issue
# Project > Plan > Issues > New issue

Title: 用户登录功能无法使用
Description:
## 问题描述
点击登录按钮后页面无响应。

## 复现步骤
1. 打开登录页面
2. 输入用户名和密码
3. 点击登录按钮
4. 页面没有反应

## 期望行为
应该跳转到首页或显示错误信息。

## 环境信息
- 浏览器: Chrome 120
- 操作系统: Windows 11

## 截图
![screenshot](url)

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与文档管理。

发表回复

后才能评论