worktree工作树的使用

你的运行环境:

TRAE SOLO CN
版本: 0.1.7
提交: efa016a6172af803a301f1ddaba2c7bd2eb56c84
日期: 2026-04-30T12:18:54.915Z
Electron: 39.2.7-release.1.33.3 (aha)
Node.js: 22.21.1
V8: 14.2.231.25-electron.0
OS: Windows_NT x64 10.0.19045
构建版本: 2.3.24253
SOLO SDK Version: 1.3.8

问题描述(你遇到了什么问题?):

  • 使用worktree功能时发现没有将本地的工作文件同步过来,分析是因为worktree是基于我本地的main分支创建的。
  • 考虑到远端仓库的整洁性我在main分支中设置.gitignore添加规则将.trae等开发用的目录忽略了,因此worktree基于main分支创建的新开发分支就不包含.trae等目录,那么在开发的时候agent需要读取.trae目录下的specs等信息时就会找不到文件。
  • 在基于工作区的模式下能访问到.trae这类目录,但是并行开发时就会导致修改同一个工作区的文件,无法将多个任务分离开。

复现步骤(如何才能重现这个 Bug/问题?):

  1. 在本地仓库.gitignore中添加忽略规则,提交commit
  2. 在worktree模式下基于此分支执行开发任务
  3. 点击查看任务的文件管理就能看到被忽略的文件不存在与此分支的工作目录

报错信息或截图(如有):

左图: worktree创建的新分支的文件结构 右图: 本地的开发时文件结构

如果有解决办法或任何建议意见请联系我,感谢:grinning_face:

我理解你的问题了——在 main 分支用 .gitignore 忽略了 .trae 等目录后,基于 main 创建的 worktree 新分支就缺少这些文件,导致 Agent 找不到需要的信息。

根据经验,有个简单的办法可以试试:你可以在仓库里建一个专门的「基础开发分支」,这个分支里不要忽略 .trae 目录,以后 worktree 都从这个分支创建,而不是直接从 main 创建。

这样既保持了 main 分支的整洁,又能让每个 worktree 都有完整的开发环境。你觉得这个方向可行吗?

1 个赞

我有想过这样的解决办法:新建一个develop分支专门用于开发,修改develop分支中的.gitignore文件,这样就能将.trae这样的目录囊括进来进行开发,但是这样做开发完成后如何将修改合并到main分支中,.gitignore会冲突,而且.trae这类文件是不是也会被合并到main分支中,这不是我期望的。

1 个赞

我理解你的顾虑——确实,直接合并的话 .gitignore 和 .trae 目录都会带过去,这不是你想要的。

有个更灵活的方案:你可以在仓库根目录建一个 .gitignore_global 文件(或者别的名字),在里面配置 .trae 等忽略规则,然后在本地 Git 配置里用 core.excludesfile 指向它,而不是把这些规则提交到仓库的 .gitignore 里。

这样所有分支都能共用这套忽略规则,但又不会随分支合并影响 main 分支。你觉得这个思路如何?对,你担心的问题很实际——直接合并的话确实会把 .gitignore 和 .trae 都带过去。

换个思路:其实你可以把 .trae 这类 TRAE 专用目录配置成全局 Git 忽略,而不是提交到仓库的 .gitignore 里。

具体做法是:

  1. 在你电脑上建个文件,比如 ~/.gitignore_global,把 .trae 这类规则写进去
  2. 运行 git config --global core.excludesfile ~/.gitignore_global 告诉 Git 用这个文件

这样不管你在哪个分支、哪个 worktree 里,.trae 都会被忽略,但又不会影响仓库里的 .gitignore 文件,合并到 main 分支时自然也不会有冲突了。

你觉得这样能解决你的问题吗?

1 个赞

收到,我们check下。

1 个赞