
两个 AI 聊天窗口不一定对应两份代码。如果它们都在同一个目录中工作修改的仍是同一批文件一个刚改完另一个可能就把它覆盖了。Git worktree 可以让同一个仓库拥有多个工作目录每个目录检出自己的分支。把任务分别放进去能隔开日常文件修改最后如何合并仍由 Git 和代码审查处理。分支与目录解决的是两件事分支记录一条提交路线工作目录存放当前正在编辑的文件。在同一目录里切换分支并没有同时得到两份可编辑文件两个进程仍可能互相影响。工作方式文件在哪里同时修改会怎样两个聊天共用一个目录同一份文件可能直接覆盖未提交改动也会互相可见同一目录来回切分支同一个工作目录需要切换状态不适合两个任务同时写两个 worktree各用一个分支两个独立目录文件修改分开提交后再决定如何合并worktree 共用仓库的对象库和引用并不是完整复制两个独立仓库。常规情况下Git 也不会让同一个分支同时检出到两个 worktree为不同任务创建不同分支即可不必用强制选项绕过这个检查。用一个小仓库看清隔离效果下面是 Windows PowerShell 示例在没有同名文件夹的空目录运行。先建立演示仓库提交一个文件再创建两个工作目录mkdir worktree-demo cd worktree-demo git init -b main Set-Content README.md base -Encoding utf8 git add README.md git -c user.nameDemo -c user.emaildemoexample.invalid commit -m base git worktree add -b task/docs ../wt-docs git worktree add -b task/ui ../wt-ui git worktree listgit worktree list应列出三个目录及其分支主目录对应mainwt-docs对应task/docswt-ui对应task/ui。为了看出区别故意让两个任务把同一个文件改成不同内容Set-Content ../wt-docs/README.md docs change -Encoding utf8 Set-Content ../wt-ui/README.md ui change -Encoding utf8 Get-Content README.md Get-Content ../wt-docs/README.md Get-Content ../wt-ui/README.md三次读取应分别得到base、docs change、ui change。一个任务修改文件没有覆盖另一个工作目录主目录也没有因此跟着变化。给 AI 指定目录比只说分支名更直接实际分工时在第一个任务中明确要求“只在 wt-docs 的绝对路径下改文档”在第二个任务中指定 wt-ui 的绝对路径。开始修改前让它报告当前目录和git branch --show-current的结果。仅在提示词里写“你负责 docs 分支”但两个任务仍从同一目录启动不足以证明文件已经隔开。也不要让任务越过自己的目录顺手修改另一份 worktree。如果任务依赖当前尚未提交的修改需要先明确怎样带入这些改动。新 worktree 从指定提交创建不会自动复制另一个目录里的未提交文件。隔开修改不等于合并时没有冲突演示中两个分支改了 README 的同一行。如果分别提交再把两个分支合回 main后合入的一方可能产生冲突worktree 解决的是“编辑时互相覆盖”不是替你决定该保留哪个版本。合并前先在各自目录检查git status --short把需要交付的改动提交再用git diff main...task/docs等命令审查已提交差异。三点比较查看的是提交之间的差异不能拿它代替检查未提交文件。两个 worktree 的开发服务也可能抢同一个端口测试可能写入同一个数据库或共享缓存。文件目录分开之后端口、测试数据与外部服务仍要按任务安排。任务结束后怎样收拾目录确认需要的改动已经提交或另行保存再从主目录执行git worktree remove ../wt-docs git worktree remove ../wt-ui git worktree list如果 Git 提示目录还有修改先回去检查不要直接加--force。移除 worktree 不会自动删除对应分支分支是否继续保留等合并和审查完成后再决定。