| name | gitlab-pr-issue |
| description | 查看/更新 GitLab Issue、MR(含评论与 diff),并按团队规范非交互创建或修改 MR/Issue;涉及 GitLab(含自建实例)Issue/MR 的操作时使用。 |
GitLab CLI Skill(Issue/MR)
基本准备
- 确认身份与认证:
glab auth status读取当前实例及 “Logged in toas ” 行。 - 直接取用户名:
GITLAB_HOST=<host> glab api /user | jq -r '.username'(依赖本机jq,若已设全局GITLAB_HOST可直接glab api /user)。 - 自建实例优先通过环境变量
GITLAB_HOST指定;如需单次覆盖,可在命令前加GITLAB_HOST=<host>或用-R group/project。
- 输出格式默认够用,若需机器可读用
--output json。 - 创建 MR 或 Issue 成功后,在终端单独一行输出 CLI 返回的完整 URL。
Issue 快速查看
- 只看正文:
glab issue view <id|url>. - 带讨论:
glab issue view <id|url> --comments(必要时加--system-logs)。 - 列表:
glab issue list --state opened --per-page 50 [-R group/project];过滤标签用--label foo,bar。 - 添加评论:
glab issue note <id> -m "comment"。
MR 快速查看
- MR 概览(按需取字段):
glab mr view <id|branch|url> --output json | jq -r '.title,.state,.author.username,.web_url,.description'。 - 查看 diff:
glab mr diff <id|branch> --color=never;需要原始 patch 用--raw。 - 相关 issue:
glab mr issues <id>。
创建 MR(非交互)
以下标题与描述规范为默认推荐格式;如与团队/仓库/平台等既有约束冲突,以既有约束为准。若有明确要求(如需中文),则优先遵循;未覆盖的部分再按本规范补齐。
- 确保本地分支已推送且
git status干净。 - 标题风格:英文、遵循语义化提交规范(如
feat(scope): short summary),保持简洁且描述核心目的;即使标题要求中文,语义化前缀(如feat、fix)仍需英文。 - 描述风格:英文、短句和项目符号,优先让不看代码的读者也能理解动机与结果。重点是 what/why/impact 和被迫约束,避免流水账与开发过程细节。若上下文不足以明确目标或约束,应主动向开发者确认后再撰写。
- 期望正文格式(精简但信息完整,按需删减无关块):
## Summary:用 1-2 条短句从功能层面概述目的与影响,强调功能变更而非逐条代码变更;跨层(如 Service/DAO)且语义一致的改动应合并为一次功能描述。## Key changes:3-5 条要点列出主要变更。## Constraints / tradeoffs:若存在约束、限制或非理想选择,简要说明。## Testing:验证方式、命令或场景;未测试需注明原因。## Notes(可选):review 关注点、发布注意事项或后续计划。
- 特别强调:描述应聚焦 MR 合并前后系统的变化与影响,避免记录开发中的中间过程或修改步骤。
- 用 heredoc 传多行描述,避免交互式编辑:
glab mr create \
--title "feat(scope): short summary" \
--description "$(cat <<'EOF'
# 按上面的格式填充正文
EOF
)" \
--target-branch main \
--source-branch $(git branch --show-current) \
--label bugfix \
--draft \
--yes
- 推荐参数(可按需开启):
--remove-source-branch(合并后删源分支)、--squash-before-merge(合并前压缩为单一 commit);若团队偏好可省略。 - 其他常用参数:
--reviewer user1,user2、--allow-collaboration。 - 修改已建 MR:
glab mr update <id> --title "..." --description "$(cat <<'EOF'\n...\nEOF\n)" --label ... --yes。
Issue 创建(非交互)
- 命令模式与 MR 类似,使用
--title与 heredoc 描述:
glab issue create \
--title "feat: short summary" \
--description "$(cat <<'EOF'\n- context\n- expected\nEOF\n)" \
--label backlog,team-x \
--assignee user1 \
--yes
- 若需私密:加
--confidential;截止日期--due-date YYYY-MM-DD。
常见选项速记
-R group/project:指定自建实例项目,等价于完整 URL。--per-page与--page:分页查看列表或评论时使用。
更新 Issue/MR 标题或描述(前置要求)
在更新 Issue 或 MR 的标题/描述之前,必须先读取当前标题/正文(即将被修改的内容),再进行修改。