用途:管理堆叠式合并请求(stacked MR),把一项功能拆成多个相互依赖的小型 MR。本地每个 diff 是一个独立分支上的提交,基于前一个 diff 的分支;同步时创建指向前一分支的 MR,第一个 diff 指向基础分支。命令作用于最近创建或切换到的活动堆叠,与当前检出分支无关,变更前应先检查活动堆叠。该功能仍为实验性。
主要能力:create 创建并激活堆叠;switch 切换活动堆叠(不带名称可交互选择);infer 从 Git 修订范围创建或追加堆叠层;save 保存新 diff;amend 修改已有 diff,支持 --reword 仅改提交信息,--no-verify 跳过本地钩子;list/first/last/next/prev/move 浏览堆叠;reorder 重排并变基、重定向已移动的 MR;sync 推送堆叠并创建或更新 MR;delete 仅删除本地堆叠元数据。
用法要点:glab stack infer main..HEAD 从提交推断堆叠层,范围起点须解析为分支名而非 HEAD~5 这类相对引用;无活动堆叠时可用 --name 指定名称。glab stack sync 支持 --update-base、--assignee、--reviewer、--label、--skip-mr-creation、--skip-push。生成分支名为 {branch_prefix}-{stack-title}-{hash},未设置 branch_prefix 时使用操作系统账户名,可用 glab config set branch_prefix <value> 固定前缀。
限制:reorder 不推送分支但会写远端,不是演练;重排变基进行中不得再次启动。delete 不删除分支、提交或 MR。--skip-push 并非离线模式,仍会拉取远端并调用 GitLab API。完整帮助见 references/commands.md。