Git 工作流
CrabCode 内置的 git 命令组:看 diff、切分支、智能生成 commit message、一键 push + 开 PR、在终端看 PR 评论。
是什么
CrabCode 把日常 git 操作做成了一组 slash 命令。背后调的是你本机的 git 和 gh(GitHub CLI),但 commit message、PR 标题、PR 描述都由 CrabCode 基于当前 diff 自动起草——比手写省一截,且会跟上仓库已有的提交风格。
所有命令都遵循统一的 git 安全规则:不动 git config、不破坏性操作(push --force / reset --hard 等)除非你明确要求、不跳过 hooks、不提交看起来像密钥的文件。
命令一览
| 命令 | 干什么 |
|---|---|
/diff | 看未提交变更与每轮 diff |
/branch [name] | 在当前会话位置创建一条分支 |
/commit | 起草 commit message 并创建一次 commit |
/commit-push-pr | commit + push + 开 PR(或更新已有 PR) |
/pr-comments | 在终端查看 GitHub PR 的评论 |
/install-github-app | 给仓库装 CrabCode 的 GitHub Actions 集成 |
/diff —— 看待改文件
显示当前工作区相对 HEAD 的未提交改动,以及最近几轮里 CrabCode 自己改过的文件 diff。用来在 commit 前过一遍"我(和它)到底改了啥"。
/branch [name] —— 切分支
在当前会话位置开一条新分支。不带参数会让 CrabCode 起一个名字(基于最近的话题);/branch feature/x 直接指定。会话上下文跟随分支保留——切回去还能接着聊。
/commit —— 智能 commit
CrabCode 会自己跑 git status / git diff HEAD / git log --oneline -10,分析改动性质(新功能、修复、重构、文档……),照仓库现有的 commit 风格起草一条 1–2 句的 message(聚焦 为什么 而非 改了什么),然后用 heredoc 语法创建 commit。
只允许这三个 git 子命令:git add / git status / git commit。不会动 push。
如果工作区没有任何改动,不会创建空 commit。
/commit-push-pr —— 一键工作流
一气呵成:
- 如果当前在主分支(默认分支自动探测),先创建一条
username/topic形式的新分支 - 创建 commit(同
/commit规则) git push -u origin <branch>- 用
gh pr create开 PR;标题短(< 70 字符),细节写进 body;body 用统一模板(Summary + Test plan) - 如果同分支已有 PR,自动改成
gh pr edit更新标题和正文
PR URL 会在最后回显。
允许的命令面比 /commit 大:git checkout -b / git push / gh pr create / gh pr edit / gh pr view / gh pr merge。其它不在白名单的命令仍会走权限询问。
/pr-comments —— 在终端看 PR 评论
跑在你当前仓库的 PR 上(自动探测 gh pr view 拿 PR 号),把 PR 级评论和代码 review 评论都拉下来,按 @作者 文件名:行号 → diff hunk → 评论文本 → 回复 的格式打印。代码引用的 diff_hunk 会原样保留,方便对照。
适合在 /review 或 /ultrareview(详见 代码审查)跑完后,把审查者留的 comment 拉进会话上下文继续讨论。
/install-github-app
把 CrabCode 的 GitHub App 装到当前仓库或组织里,开通 PR 自动评论、CI 触发审查等能力。需要仓库管理员权限;走交互式 OAuth。
配置:commit attribution
CrabCode 默认会在 commit message 和 PR 描述末尾追加一段署名(说明这次提交是 CrabCode 协作产生的)。改这段文字走 settings.json:
{
"attribution": {
"commit": "Co-Authored-By: CrabCode <crabcode@acosmi.com>",
"pr": "Generated with CrabCode"
}
}{
"attribution": {
"commit": "Co-Authored-By: CrabCode <crabcode@acosmi.com>",
"pr": "Generated with CrabCode"
}
}attribution.commit—— commit message 尾的署名行;置空字符串""就完全关掉attribution.pr—— PR 描述尾的署名行;同上- 任一字段不设 → 用 CrabCode 的内置默认值
旧字段
includeCoAuthoredBy: false仍兼容(整体关闭署名),但已废弃,建议用attribution取代。
配置:跳过 git 工作流指令
{ "includeGitInstructions": false }{ "includeGitInstructions": false }关掉后,CrabCode 的系统提示里就不再自动注入 commit / PR 模板。适合你想用别的 commit 风格、或在 CRABCODE.md 里写了自定义流程。
和 Hooks 的呼应
/commit-push-pr 在跑到 git push 那一步时,会经过 PreToolUse(Bash(git push:*)) hook。你可以在 hook 里:
- 拒绝推到
main/master(返decision: block) - 强制本地先跑测试再放行
- 把 push 事件转发到内部审计系统
详见 Hooks。
Worktree 与署名
如果你大量用 git worktree 做并行任务,注意 commit 是按工作树独立的;CrabCode 的署名字段(attribution.commit)是全局 settings.json 字段,不区分 worktree。
相关
- Hooks —
PreToolUse拦截 push - CrabCode Web —
/ultrareview走云端深度评审 - 代码审查 —
/review//ultrareview//security-review - Settings —
attribution/includeGitInstructions字段