在日常开发中有可能会遇到并行开发的场景,单仓库下会遇到同时修改相同文件导致生成结果异常的问题。
基于 Git WorkTree,可以对相同文件进行修改,实现多功能并行开发,最后再通过 WorkTree 合并来解决冲突问题。

Git WorkTree

Git WorkTree 机制允许在当前项目中创建多个相同的工作目录(工作区/工作副本),每个工作区看起来像一个独立的仓库,但是底层共享同一个 Git 仓库的历史和对象库,解决了切换分支会覆盖当前工作目录的问题。

  • 独立工作目录:每个 WorkTree 都有独立的工作目录,可以同时在不同分支上工作。
  • 共享仓库数据:所有 WorkTree 共享同一个 .git 目录,包括历史记录和对象库。
  • 避免分支切换:不需要频繁切换分支,可以在不同目录中同时处理多个分支。

WorkTree 就是把仓库分支直接铺平在目录里给你,你不用切换分支就能修改其他仓库的文件。

基本操作

git worktree list # 查看 worktree分支

# 注意创建分支前,先把本地仓库文件提交到本地仓库,创建时才会生成对应的工作区文件
git worktree add .tree/feature_xxx # 添加 worktree 工作区
git worktree add .tree/feature_yyy # 添加 worktree 工作区

git worktree remove .tree/feature_xxx # 移除工作区

多任务并行开发流程

1. 准备工作

创建多个 WorkTree 工作区,每个工作区对应一个开发任务:

# 确保主分支已提交所有更改
git add .
git commit -m "xxxx"

# 创建多个 WorkTree 工作区
git worktree add .tree/quality_feature
git worktree add .tree/testing_feature
git worktree add .tree/ui_feature

使用 git branch 查询时,工作区前面会有 + 标记。

2. 启动多个终端进程

多任务需要多个终端进程同时启动,然后每个终端在对应的 WorkTree 工作区启动 Claude。
这样不需要特别指定工作目录就可以执行任务:

在每个 WorkTree 目录中启动 Claude 并在对应工作区执行任务:

3. 合并 WorkTree 分支

等待任务执行完成后,我们再通过命令合并所有 WorkTree,让 Claude 自己去解决冲突问题。

通过 git merge @.tree 下的所有 worktree 分支,如果出现冲突的话,帮我修复直至所有冲突解决。

手动合并流程

  1. 切换回合并分支
  2. 逐个合并 WorkTree 分支:
    git merge quality_feature
    git merge testing_feature
    git merge ui_feature
    
  3. 如果有冲突,再使用 Claude 帮助解决冲突

注意事项

  • 需要注意自己的 token 消耗,多任务并行开发 token 消耗速度很快。
  • 因为部分平台可能限制请求频率导致执行失败,Claude 会有重试机制,单还是需要人工监督。

Claude 个人使用感受

优点

  • 规划能力:目前整体使用上,可以感觉到 Claude Code 的任务规划能力要优于使用过的其他编程助手。
  • 内置指令:内置的工具集强大,确实是目前见过比较有想法的编程助手,很多内容都会提供详细的信息介绍,而且在创建功能时都会有清晰的指引,以及流程上的简化。
  • 清晰的动作执行步骤:不管是做什么操作,都会列出当前执行步骤,很方便理解当前在处理的流程是否符合我们的预期,以及对应的 token 消耗,方便去规划执行能力。
  • 记忆能力:基于 CLAUDE.md 自定义记忆内容,这点确实很方便,同时通过 Markdown 让用户能很快理解 Claude 记住了会处理哪些内容。

缺点

  • 锁区:锁区是最大的问题,这样就用不了 Claude 自家的 Opus 模型,订阅制需要国外信用卡。
  • Token 消耗太高:这个是无法用订阅制的另一个弊端,只能用第三方 API 的基于 token 消耗来使用,即便是 Claude 内部有很多减少 token 消耗的配置,但是过多 token 消耗对于独立开发者实在是负担不起,用不起好的模型。
  • CLI 使用方式:CLI(Command Line Interface)对于经常使用界面操作的开发人员来说会不太适应,官方文档指引做的也不是很好,而且在自己的设备操作上,经常会出现意外卡死的情况,需要频繁重启。
  • 中文不友好:Claude 似乎在问答过程中经常会出现英文回答的情况,应该和助手底层实现有关,目前用 Cursor 没有出现过类似的问题,可能是和锁区原因,所以底层的 prompt 设计没有考虑中文用户有关。

参考内容

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐