
关于
按照 Sentry 命名规范创建 Git 分支。当被要求创建分支时使用。
name: create-branch description: 按照 Sentry 命名规范创建 git 分支。当被要求"创建分支"、"新分支"、"开始分支"、"建分支"、"切换到新分支",或在默认分支上开始新工作时使用。 argument-hint: '[可选的工作描述]' risk: critical source: community
创建分支
使用正确的类型前缀和描述性名称创建 git 分支,遵循 Sentry 规范。
何时使用
- 需要创建遵循仓库命名规范的新 git 分支时。
- 从默认分支开始新工作,需要将其分类为
feat、fix、docs或其他分支类型时。 - 希望从任务描述或当前本地差异中生成分支名称时。
步骤1:获取用户名前缀
运行 gh api user --jq .login 获取 GitHub 用户名。
如果命令失败(例如未认证),询问用户首选前缀。
步骤2:确定分支描述
如果提供了 $ARGUMENTS,将其用作工作描述。
如果没有参数,检查本地更改:
git diff
git diff --cached
git status --short
- 存在更改:读取差异内容以了解工作内容并生成描述。
- 无更改:询问用户即将进行的工作。
步骤3:分类类型
根据描述从下表中选择类型:
| 类型 | 使用场景 |
|------|----------|
| feat | 新的面向用户的功能 |
| fix | 修复已损坏的行为 |
| ref | 相同行为,不同结构 |
| chore | 依赖、配置、版本升级、更新现有工具——无新逻辑 |
| perf | 相同行为,更快 |
| style | CSS、格式化、仅视觉变更 |
| docs | 仅文档 |
| test | 仅测试 |
| ci | CI/CD 配置 |
| build | 构建系统 |
| meta | 仓库元数据变更 |
| license | 许可证变更 |
不确定时:新事物用 feat(包括新脚本、技能或工具),重构现有事物用 ref,仅更新/维护已有内容时用 chore。
步骤4:生成并提议
按 <用户名>/<类型>/<简短描述> 格式构建分支名称。
<简短描述> 规则:
- 使用 kebab-case,全小写
- 3到6个单词,简洁但清晰
- 描述变更内容,而非文件名
- 仅使用 ASCII 字母、数字和连字符——不使用空格、点、冒号、波浪号或其他 git 禁止的字符
向用户展示并询问是否使用、修改或更改类型。
示例
| 工作描述 | 分支名称 |
|----------|----------|
| 下拉菜单点击外部不关闭 | priscila/fix/dropdown-not-closing-on-blur |
| 为对话页面添加搜索 | priscila/feat/add-search-to-conversations |
| 重构抽屉组件 | priscila/ref/simplify-drawer-components |
| 更新测试固件 | priscila/chore/update-test-fixtures |
| 升级 @sentry/react 到最新版本 | priscila/chore/bump-sentry-react |
| 添加新的 agent 技能 | priscila/feat/add-create-branch-skill |
步骤5:创建分支
确认后,检测当前分支和默认分支:
git branch --show-current
git remote | grep -qx origin && echo origin || git remote | head -1
git symbolic-ref refs/remotes/<remote>/HEAD 2>/dev/null | sed 's|refs/remotes/<remote>/||' | tr -d '[:space:]'
如果 symbolic-ref 失败,回退到 git branch --list main master:使用存在的那个;如果两者都存在或都不存在,询问用户。
如果 git branch --show-current 为空(分离 HEAD 状态),显示当前提交(git rev-parse --short HEAD)并询问是从该提交创建分支还是先切换到默认分支。
如果当前分支不是默认分支,警告用户并询问是从当前分支创建还是先切换到默认分支。
如果用户想切换到默认分支,妥善处理未提交的更改(如有则提议暂存),然后运行 git checkout <默认分支> 并从该处创建新分支。
