关于 gitlab-mr
供使用 GitLab 的开发者处理合并请求的技能,通过 `glab` 命令行提供从查看、评审到合并和关闭的操作指南。还说明了操作风险及常见工作流。
主要功能
- 01列出并查看合并请求
- 02创建、更新和检出请求分支
- 03评审、批准并添加评论
- 04合并、关闭、重开或变基
- 05按负责人、状态和标签筛选
适用场景
- 01查看待评审请求并检出分支测试
- 02创建草稿合并请求并指定评审者
- 03在流水线成功后安排自动合并
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ grandcamel/ gitlab-assistant-skills --skill gitlab-mr安装后在 Claude Code 中输入/gitlab-mr确认已加载。
详细介绍
合并请求技能
使用 glab CLI 执行 GitLab 合并请求操作。
快速参考
| 操作 | 命令 | 风险 |
|---|---|---|
| 列出 MR | glab mr list | - |
| 查看 MR | glab mr view <id> | - |
| 创建 MR | glab mr create | ⚠️ |
| 检出 MR | glab mr checkout <id> | - |
| 批准 MR | glab mr approve <id> | ⚠️ |
| 合并 MR | glab mr merge <id> | ⚠️⚠️ |
| 更新 MR | glab mr update <id> | ⚠️ |
| 关闭 MR | glab mr close <id> | ⚠️ |
| 重新打开 MR | glab mr reopen <id> | ⚠️ |
| 删除 MR | glab mr delete <id> | ⚠️⚠️ |
| 变基 MR | glab mr rebase <id> | ⚠️ |
风险说明:- 安全 | ⚠️ 谨慎 | ⚠️⚠️ 警告 | ⚠️⚠️⚠️ 危险
何时使用此技能
始终在以下情况使用:
- 用户想要处理合并请求
- 用户提到“MR”、“merge request”、“pull request”或相关术语
- 用户想要审查、批准或合并代码
以下情况绝不使用:
- 用户想要批量操作 10 个或更多 MR(改用 gitlab-bulk)
- 用户只想搜索或筛选 MR(改用 gitlab-search)
可用命令
列出合并请求
glab mr list [options]
选项:
| 标志 | 说明 |
|---|---|
--assignee=@me | 按受指派人筛选(使用 @me 表示自己) |
--reviewer=@me | 按审阅者筛选 |
--author=<username> | 按作者筛选 |
--label=<labels> | 按逗号分隔的标签筛选 |
--state=<state> | 按状态筛选:opened、closed、merged、all |
--source-branch=<branch> | 按源分支筛选 |
--target-branch=<branch> | 按目标分支筛选 |
-P, --per-page=<n> | 每页项目数 |
示例:
# List MRs assigned to you
glab mr list --assignee=@me
# List review requests for you
glab mr list --reviewer=@me
# List open MRs with specific label
glab mr list --state=opened --label=bug
# List MRs targeting main branch
glab mr list --target-branch=main
查看合并请求详情
glab mr view <id> [options]
选项:
| 标志 | 说明 |
|---|---|
-w, --web | 在浏览器中打开 MR |
-c, --comments | 显示 MR 评论和备注 |
-s, --system-logs | 显示系统活动/日志 |
示例:
# View MR details in terminal
glab mr view 123
# Open MR in browser
glab mr view 123 --web
# View MR with comments
glab mr view 123 --comments
创建合并请求
glab mr create [options]
选项:
| 标志 | 说明 |
|---|---|
-t, --title=<title> | MR 标题 |
-d, --description=<desc> | MR 描述 |
-b, --target-branch=<branch> | 目标分支(默认:默认分支) |
-f, --fill | 使用提交消息作为标题/描述 |
--draft | 创建为草稿 MR |
-a, --assignee=<users> | 逗号分隔的受指派人 |
-r, --reviewer=<users> | 逗号分隔的审阅者 |
-l, --label=<labels> | 逗号分隔的标签 |
-m, --milestone=<milestone> | 里程碑标题 |
--squash-on-merge | 合并时压缩提交 |
--remove-source-branch | 合并时删除源分支 |
-w, --web | 在浏览器中打开创建的 MR |
-y, --yes | 跳过确认提示 |
示例:
# Create MR with title and description
glab mr create -t "Add new feature" -d "This MR adds..."
# Create MR from commit messages
glab mr create --fill
# Create draft MR
glab mr create --draft -t "WIP: New feature"
# Create MR with reviewers and labels
glab mr create -t "Fix bug" -r "reviewer1,reviewer2" -l "bug,urgent"
# Create MR and open in browser
glab mr create -t "Feature" --web
检出合并请求分支
glab mr checkout <id> [options]
快捷命令: glab co <id>
选项:
| 标志 | 说明 |
|---|---|
-b, --branch=<name> | 本地分支名称 |
-t, --track | 为远程分支设置跟踪 |
示例:
# Checkout MR branch
glab mr checkout 123
# Checkout with custom local branch name
glab mr checkout 123 -b my-local-branch
# Shortcut
glab co 123
批准/撤销批准合并请求
# Approve MR
glab mr approve <id>
# Revoke approval
glab mr revoke <id>
# View approvers
glab mr approvers <id>
合并/关闭/重新打开
# Merge MR
glab mr merge <id> [options]
# Close MR
glab mr close <id>
# Reopen closed MR
glab mr reopen <id>
合并选项:
| 标志 | 说明 |
|---|---|
-s, --squash | 压缩提交 |
-d, --remove-source-branch | 合并后删除源分支 |
--when-pipeline-succeeds | 流水线成功时合并 |
-m, --message=<msg> | 自定义合并提交消息 |
-y, --yes | 跳过确认 |
示例:
# Merge with squash
glab mr merge 123 --squash
# Merge and delete source branch
glab mr merge 123 --remove-source-branch
# Auto-merge when pipeline succeeds
glab mr merge 123 --when-pipeline-succeeds
更新合并请求
glab mr update <id> [options]
选项:
| 标志 | 说明 |
|---|---|
-t, --title=<title> | 更新标题 |
-d, --description=<desc> | 更新描述 |
-a, --assignee=<users> | 更新受指派人 |
-r, --reviewer=<users> | 更新审阅者 |
-l, --label=<labels> | 更新标签 |
--unlabel=<labels> | 移除标签 |
--draft | 标记为草稿 |
--ready | 标记为就绪(移除草稿状态) |
--lock-discussion | 锁定讨论 |
--unlock-discussion | 解锁讨论 |
示例:
# Update title
glab mr update 123 -t "New title"
# Add reviewers
glab mr update 123 -r "user1,user2"
# Mark as ready (remove draft)
glab mr update 123 --ready
# Add and remove labels
glab mr update 123 -l "approved" --unlabel "needs-review"
添加备注/评论
glab mr note <id> -m "<message>"
示例:
# Add comment
glab mr note 123 -m "LGTM!"
# Add closing note
glab mr note 123 -m "Closing because !456 supersedes this"
变基合并请求
glab mr rebase <id>
查看差异
glab mr diff <id> [options]
选项:
| 标志 | 说明 |
|---|---|
--color=<when> | 何时显示颜色:always、never、auto |
订阅/取消订阅
# Subscribe to MR notifications
glab mr subscribe <id>
# Unsubscribe
glab mr unsubscribe <id>
添加到待办事项
glab mr todo <id>
常见工作流
工作流 1:审查并批准
# 1. List MRs assigned for review
glab mr list --reviewer=@me
# 2. View MR details
glab mr view 123
# 3. Checkout to test locally
glab mr checkout 123
# 4. Run tests, review code...
# 5. Approve if good
glab mr approve 123
# 6. Add comment
glab mr note 123 -m "Reviewed and approved. Great work!"
工作流 2:创建功能 MR
# 1. Create branch and make changes
git checkout -b feature/my-feature
# 2. Commit changes
git add . && git commit -m "Add new feature"
# 3. Push branch
git push -u origin feature/my-feature
# 4. Create MR
glab mr create -t "Add new feature" -d "Description..." --draft
# 5. Mark ready when done
glab mr update <id> --ready
工作流 3:快速修复
# Create MR from current branch with commit info
glab mr create --fill --yes
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 身份验证失败 | 令牌无效/已过期 | 运行 glab auth login |
| 未找到 MR | ID 无效或无权访问 | 使用 glab mr list 验证 ID |
| 权限被拒绝 | 权限不足 | 检查项目权限 |
| 无法合并 | 存在冲突或流水线失败 | 解决冲突,等待流水线完成 |
| 未找到分支 | 源分支已删除 | 检查分支是否存在 |
相关文档
评论
支持 Markdown