cnb-rs repo create
cnb-rs repo create <NAME> [OPTIONS]创建新仓库。
不指定 --group 时,默认创建到当前认证用户的个人空间。 默认创建公开仓库,可通过 --private 或 --secret 切换可见性。
指定 --license 或 --gitignore 时,创建仓库后会自动推送初始文件(LICENSE / .gitignore)。 模板内容从 CNB 镜像仓库获取,可通过 ~/.cnb/config.toml 的 [templates] 段自定义仓库。
注意: CNB 的 create repo API 不支持服务端生成 license / gitignore(与 GitHub 不同), 因此 cnb-rs 采用客户端方案:创建仓库后本地 git init → 写入模板文件 → commit → push。
选项
<NAME>: 仓库名称(必填)--group <GROUP>: 所属组织(不指定则创建到个人空间)-d, --description <TEXT>: 仓库描述-l, --license <SPDX_ID>: 开源许可证(如MIT/Apache-2.0;用cnb-rs repo license list查看可用值)-g, --gitignore <TEMPLATE>: .gitignore 模板(如Rust/Node;用cnb-rs repo gitignore list查看可用值)--add-readme: 添加 README 文件(内容为# 仓库名+ 描述)--private: 创建私有仓库--secret: 创建加密仓库-c, --clone: 创建后克隆到本地
继承的全局选项:
--domain <DOMAIN>: 指定目标域名(默认:cnb.cool)
用法
完整参数
bash
cnb-rs repo create <NAME> \
--group <ORG> \ # 所属组织
-l <SPDX_ID> \ # --license,如 MIT / Apache-2.0
-g <TEMPLATE> \ # --gitignore,如 Rust / Node
--add-readme \ # 生成 README.md
-d <DESCRIPTION> \ # 仓库描述(也作为 README 内容)
-c # --clone,保留本地目录指定 --license / --gitignore / --add-readme 任一时触发初始文件推送流程。
场景 A:不带 --clone(只想远端有文件,本地不留目录)
bash
cnb-rs repo create my-lib --group my-org -l MIT -g Rust --add-readme -d "A fast lib"执行过程:
┌─────────────────────────────────────────────────────────────────┐
│ 1. 预校验:从模板仓库获取 MIT.txt 和 Rust.gitignore 内容 │
│ (失败则报错退出,不创建仓库) │
├─────────────────────────────────────────────────────────────────┤
│ 2. POST API 创建仓库 my-org/my-lib │
│ → ✓ 已创建仓库 my-org/my-lib │
├─────────────────────────────────────────────────────────────────┤
│ 3. 创建 tempdir(系统临时目录) │
│ → git init │
│ → git remote add origin https://cnb.cool/my-org/my-lib.git │
├─────────────────────────────────────────────────────────────────┤
│ 4. 写入文件: │
│ tempdir/README.md ← "# my-lib\n\nA fast lib\n" │
│ tempdir/LICENSE ← MIT 模板内容 │
│ tempdir/.gitignore ← Rust 模板内容 │
├─────────────────────────────────────────────────────────────────┤
│ 5. git add . → git commit -m "Initial commit" → git push │
│ → ✓ 已推送初始文件:README.md + LICENSE + .gitignore │
├─────────────────────────────────────────────────────────────────┤
│ 6. 删除 tempdir(本地不留痕迹) │
├─────────────────────────────────────────────────────────────────┤
│ 7. stdout 输出:https://cnb.cool/my-org/my-lib │
└─────────────────────────────────────────────────────────────────┘结果:远端仓库已有 3 个文件,本地无任何目录。
场景 B:带 --clone(远端推送 + 本地保留工作目录)
bash
cnb-rs repo create my-lib --group my-org -l MIT -g Rust --add-readme -d "A fast lib" --clone执行过程:
┌─────────────────────────────────────────────────────────────────┐
│ 1. 预校验:从模板仓库获取 MIT.txt 和 Rust.gitignore 内容 │
│ (失败则报错退出,不创建仓库) │
├─────────────────────────────────────────────────────────────────┤
│ 2. POST API 创建仓库 my-org/my-lib │
│ → ✓ 已创建仓库 my-org/my-lib │
├─────────────────────────────────────────────────────────────────┤
│ 3. 创建 ./my-lib/ 目录(最终保留的工作目录) │
│ → git init │
│ → git remote add origin https://cnb.cool/my-org/my-lib.git │
├─────────────────────────────────────────────────────────────────┤
│ 4. 写入文件: │
│ ./my-lib/README.md ← "# my-lib\n\nA fast lib\n" │
│ ./my-lib/LICENSE ← MIT 模板内容 │
│ ./my-lib/.gitignore ← Rust 模板内容 │
├─────────────────────────────────────────────────────────────────┤
│ 5. git add . → git commit -m "Initial commit" → git push │
│ → ✓ 已推送初始文件:README.md + LICENSE + .gitignore │
│ → ✓ 仓库已克隆到 ./my-lib │
├─────────────────────────────────────────────────────────────────┤
│ 6. 保留目录(可直接 cd my-lib 开始工作) │
├─────────────────────────────────────────────────────────────────┤
│ 7. stdout 输出:https://cnb.cool/my-org/my-lib │
└─────────────────────────────────────────────────────────────────┘结果:远端仓库有 3 个文件,本地 ./my-lib/ 已就绪(含 remote origin + 初始 commit)。
两者区别
不带 --clone | 带 --clone | |
|---|---|---|
| 工作目录 | 系统临时目录 | ./仓库名/ |
| push 后 | 删除临时目录 | 保留目录 |
| 用户得到 | 远端仓库 + URL | 远端仓库 + URL + 本地工作目录 |
其他示例
bash
# 创建公开仓库(最简)
$ cnb-rs repo create my-project --group my-org
# 创建私有仓库
$ cnb-rs repo create my-secret --group my-org --private
# 创建加密仓库
$ cnb-rs repo create my-vault --group my-org --secret
# 创建到个人空间
$ cnb-rs repo create my-app
# 只添加 README
$ cnb-rs repo create my-notes --group my-org --add-readme -d "学习笔记"另请参阅
- cnb-rs repo license list — 查看可用 license 模板
- cnb-rs repo gitignore list — 查看可用 gitignore 模板
- cnb-rs repo view
- cnb-rs repo delete