用途:从要关闭的 worktree 中运行,把当前特性分支落地到默认集成分支 develop(用户可指定 main 等其它基础分支),然后删除该 worktree 及其本地分支。
主要能力与流程:
- 解析上下文:确认当前是链接 worktree、特性分支名,以及哪个 checkout 检出了 develop;若处于主检出、detached HEAD、或在 rebase/merge/cherry-pick 中则停止。
- 清理工作树:有已跟踪的脏改动时先运行 finish-work(检查并提交),随后中止以便用户复查新提交。
- 检查 stash:stash 是仓库级共享的,需按 WIP on <branch> 归属到当前分支;存在相关 stash 时停止并让用户决定提交、丢弃还是保留。
- 保留未跟踪文件:把仅存于本 worktree 的计划/笔记类文件复制到 develop,跳过 .env.local、Docker 覆盖配置、node_modules、构建产物、缓存和密钥。
- 重定基与快进:git rebase develop,然后在 develop 自己的 checkout 中用 git -C <develop-checkout> merge --ff-only <feature-branch> 快进;非快进时停止,不自动创建合并提交。可选择先 fetch origin develop 并快进本地 develop 再 rebase。
- 清理运行时:在删除目录前停止本 worktree 自带的 dev server,并按栈名移除属于它的 Docker 容器、卷和网络;内容不可复现的卷需先询问。不使用 docker system prune 或 docker volume prune。
- 收尾:git worktree remove <worktree-path>,再从 develop checkout 执行 branch -d <feature-branch>;仅在用户明确允许时用 -D。目录已被手动删除时用 git worktree prune 清理残留登记。
- 输出摘要并指向 develop checkout。
限制与安全:未经要求不 push;不做 --force push、硬重置或 stash drop/clear;不删除远程分支;不把密钥或仅限 worktree 的栈配置复制到 develop。命令需用 git -C <path> 明确目标,禁止在 worktree 之间 cd。遇脏工作树、相关 stash、存在 upstream 或开放 PR、非快进落地等情况需停下等待人工处理。