worktrunk 用 wt remove 删除工作树。删除前先确认目标分支和目录、保存未提交内容。如果还要继续保留分支,加上 --no-delete-branch。
为什么 wt remove 会拒绝删除?
要是目标工作树目录里存在未提交的修改,正常执行删除操作会直接中断,同时列出所有有改动的相关文件。下面的实操示例里,没被Git跟踪的scratch.txt就会触发删除拒绝提示。
mkdir worktrunk-remove-demo cd worktrunk-remove-demo git init -b main printf 'Worktrunk practice\n' > README.md git add README.md git commit -m 'Start Worktrunk practice'
eval "$(wt config shell init zsh)" wt switch -c fix/notes --base main printf 'draft\n' > scratch.txt wt switch main wt remove --foreground fix/notes

保存改动后怎么只删除工作树?
回到项目根目录,先跑git status --short核对所有草稿内容,把需要留存的文件全部提交,切回 main 分支之后再执行删除操作。这里的--foreground参数会让命令停在前台,等整个删除流程跑完,加上--no-delete-branch就能保留分支引用,不会把分支一起删掉。
wt switch fix/notes git status --short git add scratch.txt git commit -m 'Keep notes before removal' wt switch main wt remove --foreground --no-delete-branch fix/notes

怎么核对目录和分支分别还在不在?
跑git worktree list就能查到所有已登记的工作树,跑git branch --list就能查看本地分支列表。正常操作完之后,你会看到对应的工作树目录已经被移除,fix/notes分支还保留着。之后要是想继续处理这个分支,直接跑wt switch fix/notes就能重新生成对应的工作树。
git worktree list git branch --list fix/notes
如果你没加保留分支的参数,Worktrunk会自动判断这个分支的改动有没有合并到默认分支,再决定要不要删掉对应分支。那些只放在工作树目录里、没被Git跟踪的忽略文件,不会跟着提交留存,清理之前一定要先检查一遍,别把需要的本地配置或者有用数据误删了。
默认清理流程里,如果分支和 main 指向同一个提交,工作树和分支可能会被一起移除。要保留分支的话,就用前面说的 --no-delete-branch 参数。












