1

8 阅读2分钟

概述

本 Issue 记录使用 Git Worktree 进行并行开发的流程和最佳实践,以支持在不切换分支的情况下同时进行多个功能的开发。

Git Worktree 简介

Git Worktree 允许在同一个仓库中同时检出多个分支到不同的目录,避免频繁切换分支带来的上下文切换成本。

当前 Worktree 设置

  • 主工作树: /opt/src/sxl (main 分支)
  • UniApp 工作树: /opt/src/sxl_worktree (try-uniapp 分支)

并行开发流程

1. 创建新功能分支的 Worktree

创建新分支并添加 worktree

git worktree add /opt/src/sxl_ -b

或基于现有分支创建 worktree

git worktree add /opt/src/sxl_

2. 开发工作流

  1. 主线开发: 在 /opt/src/sxl 目录进行主分支的维护和修复
  2. 功能开发: 在对应的 worktree 目录进行功能开发
  3. 互不干扰: 每个 worktree 有独立的工作区,可以同时运行不同的开发服务器

3. 提交和推送

在对应的 worktree 目录中

cd /opt/src/sxl_worktree git add . git commit -m "feat: UniApp 实现" git push -u origin try-uniapp

4. 合并流程

回到主工作树

cd /opt/src/sxl git merge try-uniapp

或创建 PR 进行代码审查

5. 清理 Worktree

功能开发完成后删除 worktree

git worktree remove /opt/src/sxl_worktree

最佳实践

✅ 推荐做法

  1. 命名规范: worktree 目录名使用 项目名_功能名 格式
  2. 及时清理: 功能合并后及时删除不需要的 worktree
  3. 独立环境: 每个 worktree 维护独立的 node_modules 和构建产物
  4. 定期同步: 定期将主分支的更新合并到功能分支

❌ 避免做法

  1. 不要在 worktree 之间共享 node_modules
  2. 不要在 worktree 中切换分支(每个 worktree 绑定一个分支)
  3. 不要忘记推送 worktree 中的更改

当前并行开发任务

  • try-uniapp 分支: UniApp 多端适配实现[ ] main 分支: 现有 Next.js 网站的维护和优化

相关命令速查

列出所有 worktree

git worktree list

添加 worktree

git worktree add

删除 worktree

git worktree remove

清理过期的 worktree 信息

git worktree prune

注意事项

  1. 确保有足够的磁盘空间,每个 worktree 都是完整的工作副本
  2. 在删除 worktree 前确保所有更改已提交和推送
  3. 使用 .gitignore 排除 worktree 特定的临时文件

🏷️ Labels: workflow, git, development 🔗 Related: #12 (UniApp 开发计划)