feat(ginit): 新增一键初始化本地 Git 仓库命令

`quicommit ginit`(别名 `gi`)离线完成仓库起步:用 git2 建库并确立初始分支、
写最简 README.md、按根目录标志文件装配 .gitignore、按 --add 添加远程,
`--profile` 可选套用已有 Git 配置。在已有仓库上重复执行只补齐缺失项:绝不覆盖
既有的 README.md/.gitignore、绝不改动已有 remote 的地址、不提供 --force、
不创建首个提交。边界取舍见 ADR 0006,命令命名见 ADR 0005。

实现落在新的 src/git/init.rs(9 个 git 层函数)与 src/commands/ginit.rs,
命令层不直接引用 git2,GitRepo 公开接口未改动,其余命令行为不变。
测试:src/git/init.rs 11 条单元测试、tests/ginit_tests.rs 18 条集成测试;
新增 35 个 ginit_* 消息覆盖 7 种语言。

另将 CONTEXT.md 与 docs/adr/ 纳入版本跟踪(.gitignore 放开 adr/ 与
CONTEXT.md 两条忽略规则);RAODMAP.md 除 ginit 条目外还包含此前未提交的
规划条目更新。
This commit is contained in:
2026-10-09 09:36:04 +08:00
parent ef64e7d844
commit c2f914307d
19 changed files with 2327 additions and 40 deletions

View File

@@ -307,6 +307,7 @@ quicommit config reset --force
| Command | Alias | Description |
|---------|-------|-------------|
| `quicommit init` | `i` | Initialize configuration |
| `quicommit ginit` | `gi` | Initialize a local Git repository |
| `quicommit commit` | `c` | Generate and create commit |
| `quicommit tag` | `t` | Generate and create tag |
| `quicommit changelog` | `cl` | Generate changelog |
@@ -314,6 +315,18 @@ quicommit config reset --force
| `quicommit config` | `cfg` | Manage settings |
| `quicommit credential` | — | Git credential helper (hidden, invoked by Git) |
### Ginit Options
| Option | Description |
|--------|-------------|
| `-b, --branch` | Initial branch name (default: global `init.defaultBranch`, then `main`) |
| `--add` | Add a remote: `--add <url>` (name defaults to `origin`) or `--add <name>=<url>`; repeatable |
| `--profile` | Apply an existing Git Profile to the new repository and record the directory mapping |
| `--dry-run` | Show the plan without creating anything |
| `-y, --yes` | Skip confirmation prompts only (output behavior unchanged) |
`ginit` runs fully offline: it never creates a remote repository on a hosting service, never checks remote reachability, never makes the first commit, and never overwrites an existing `README.md` or `.gitignore`.
### Commit Options
| Option | Description |