用途:git-spice(gs)是管理堆叠 Git 分支及其变更请求(PR/CR)的命令行工具,核心是跟踪分支关系(stack)并自动变基、提交相互依赖的分支。
主要概念:Stack 指与当前分支相连的全部分支;Upstack 指当前分支之上的子分支及后代;Downstack 指当前分支之下直到 trunk 的父分支及祖先;Trunk 是主集成分支(通常 main 或 master)。
常用命令:初始化仓库 gs repo init;创建堆叠分支 gs branch create <name>(简写 gs bc);查看堆叠 gs log short(gs ls,gs log long 为 gs ll);提交整个堆叠 gs stack submit(gs ss);仅提交 upstack gs upstack submit(gs us s);仅提交 downstack gs downstack submit(gs ds s);变基整个仓库 gs repo restack;变基当前堆叠 gs stack restack(gs sr);变基 upstack gs upstack restack(gs us r);移动分支基座 gs upstack onto <base>;同步远端 gs repo sync;跟踪已有分支 gs branch track;删除分支 gs branch delete(gs bd)。多数命令有短别名,可用 gs --help 查看。
典型工作流:先 gs repo init,再依次 gs branch create 创建 feature-a、feature-b、feature-c,用 git add/commit 提交,gs log short 查看,最后 gs stack submit 提交整条堆叠。评审后修改某分支,用 gs upstack restack 变基其子分支,再 gs upstack submit 推送更新。上游合并后用 gs repo sync 与 gs repo restack 同步并重新变基。
使用边界:创建分支、变基堆叠、提交 PR、查看结构、删除分支用 git-spice;改代码、查看状态与历史、单分支切换用 git。不要对已跟踪分支直接使用 git rebase 或 git push --force,否则会破坏跟踪关系。
认证与冲突:首次用 gs auth login 认证,gs repo init 初始化,gs auth status 验证。restack 遇冲突时按标准 git 流程解决,git add 后 git rebase --continue,git-spice 会继续处理剩余分支,之后用 gs upstack submit 推送。
多仓库:git-spice 一次只操作一个仓库,每个仓库有独立堆叠,无法跨仓库建立线性堆叠。跨仓库功能应按阶段顺序提交 PR,先合并被依赖仓库,再合并依赖方。
限制:资料未提供具体版本、平台支持范围、收费与价格信息。更多用法见 gs --help、gs <command> --help 及官方文档 https://abhinav.github.io/git-spice/。