背景

功能:在git开发中让ai coding可以并行开发,而不冲突

1
2
3
4
5
resume/
├── .git
├── CV.tex
├── README.md
└── ...
  1. 想要修改项目部分
  2. 想要修改科研部分

在同一分支下工作会会发生下面的情况

  • 文件覆盖
  • git 状态混乱
  • 一个 agent 看到另一个 agent 未完成的代码
  • merge 非常痛苦

    Note: 这个问题的前提是在同一个工作目录,如果在不同的工作目录下面拉取代码进行分支开发是不会由上面的问题

原理

创建:

1
2
3
4
5
6
7
8
9
10
11
resume/

├── CV.tex

├── .git

├── ../poject/
│ └── 项目

└── ../science/
└── 科研

实际:

1
2
3
4
5
6
7
           同一个 Git 仓库历史
|
-----------------------------
| | |
main project science
| | |
Claude 你 Claude A Claude B

每个 Claude:

  • 有自己的文件
  • 有自己的 branch
  • 有自己的 git 状态

但是:

  • 共用 Git 对象
  • 不需要重新 clone
  • commit 后可以正常 merge

使用

Claude Code 已经内置了:

1
claude --worktree 名字

例如:

1
claude --worktree project

它会自动创建:

1
.claude/worktrees/project/

并建立对应 branch:

1
worktree-project

然后直接进入这个环境。

比如:

终端 1:

1
claude --worktree project

Claude:

修改项目部分简历

终端 2:

1
claude --worktree science

Claude:

修改科研部分简历

两个 agent 可以并行跑。

注意事项

  1. 不同分支相当于开了新的工作目录,所以环境得重新配置
  2. 针对需要使用有.gitignore忽略的文件,需要配置.worktreeinclude文件在项目根目录下(这样不同的worktree就可以使用到被git忽略的但是需要用到文件)
1
2
3
.env
.env.local
config/secrets.json