并行工作树

让项目会话跑在独立的 git worktree 上,改动落在独立分支,完成后合并回主仓。

项目会话可以运行在独立的并行工作树中(标记为「工作树」徽标),改动落在独立分支上,互不干扰。完成后可「合并回主仓」——合并前需要先在 Diff 视图提交改动,未提交的改动会阻止合并。删除工作树会话时可选择同时移除工作树目录(分支会保留)。

机制就是 git worktree:

  • 新建时在 ~/.klaus/worktrees/<仓库名>-<时间戳> 下 checkout 一个独立目录,并开一条 klaus/wt-<时间戳> 分支(可以指定基线 ref)。原仓库必须已经有至少一次提交,否则建不出来。
  • 会话的工作目录指向那个独立目录,所以这条会话的改动只落在那条分支上。
  • 合并回主仓:先看工作树干不干净,有未提交改动直接拒(这就是「合并前必须先提交」的由来);然后在主仓当前分支上 merge;失败会自动 abort,主仓不会留下半个合并状态。
  • 移除工作树是强制移除那个目录(不要这个隔离目录了就是本意),分支和提交都保留。
  • 只有 ~/.klaus/worktrees 里面的目录才算受管工作树,它是会话私有工作区,不会被当成你的项目。