cnb-rs pr checkout
cnb-rs pr checkout <NUMBER> [-b <NAME>] [-f]切到指定 Pull Request 的源分支。借鉴 gh pr checkout 的工作流:拉一次 get_pull 拿 head 信息,然后用本地 git 完成 fetch + checkout。
本命令不调任何 CNB 写 API,纯本地 git 操作;唯一的 API 调用是
get_pull拿 head/base 元数据。
选项
<NUMBER>:PR 编号(必填)-b, --branch <NAME>:本地分支名(默认用 head 分支名)-f, --force:强制覆盖本地同名分支(使用git checkout -B而不是-b)
继承的全局选项:
--repo <REPO>:指定仓库路径(格式:group/repo)--domain <DOMAIN>:指定目标域名(默认:cnb.cool)
工作流(同仓 PR)
- 调
${API}/repos/{repo}/-/pulls/{n}拿 head / base - 判断
head.repo.path == base.repo.path是否同仓 - 同仓时执行:bash
git fetch origin +refs/heads/<head>:refs/remotes/origin/<head> --no-tags git checkout -b <local> --track origin/<head> # 默认 git checkout -B <local> --track origin/<head> # 带 --force
输出约定
- stderr:
⚙ git fetch origin .../⚙ git checkout ...显示底层 git 命令(便于排错)- 成功
✓ 已切换到 PR #N 的源分支:<local>
- stdout:无(checkout 不输出 URL,git 命令完成即可)
- 退出码:成功 → 0;git 失败 → 1(含 git stderr 信息)
示例
bash
# 基本:切到 PR #42 的 head 分支
$ cnb-rs pr checkout 42
⚙ git fetch origin +refs/heads/feature/login:refs/remotes/origin/feature/login --no-tags
⚙ git checkout -b feature/login --track origin/feature/login
✓ 已切换到 PR #42 的源分支:feature/login
# 用本地不同的分支名
$ cnb-rs pr checkout 42 -b review-login
# 本地已有同名分支,强制覆盖
$ cnb-rs pr checkout 42 -f
# PR 的远端分支已删(如合并后清理)→ git fetch 报错
$ cnb-rs pr checkout 271
错误: git fetch origin ... 失败 # 含 git fatal 信息Known limitations / 跨仓 PR 暂不支持
- 跨仓 PR(fork → 上游)第一版报错且不尝试自动 checkout。CNB 是否支持 GitHub 风格的
refs/pull/<N>/headrefspec 暂未验证,盲目尝试可能失败且语义不明 - 跨仓 PR 报错消息会给出手动迁移路径:
请先 `git remote add <name> <fork_url>` 然后 `git fetch <name> <head_ref> && git checkout <head_ref>` - 不会自动
git pull:checkout 后用户可能想做本地改动 + push,本命令保持git checkout -B + --track的最简语义;要拿最新代码再跑git pull即可 - 不像 gh pr checkout 那样支持
--detach/--recurse-submodules:第一版优先做核心场景
API 调用
| 步骤 | API / 命令 | 说明 |
|---|---|---|
| 1. 拿 head/base | ${API}/repos/{repo}/-/pulls/{n} GET | 唯一 API 调用 |
| 2. fetch | git fetch origin +refs/heads/<head>:refs/remotes/origin/<head> --no-tags | 本地 git |
| 3. checkout | git checkout -b/-B <local> --track origin/<head> | 本地 git |
另请参阅
- cnb-rs pr
- cnb-rs pr view
- cnb-rs pr files — checkout 后看改动文件