flutter-worktrees
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseUsing Git Worktrees for Flutter Development
为Flutter开发使用Git Worktrees
Overview
概述
Git worktrees let you work on multiple branches simultaneously in separate directories. Each worktree is fully independent - you can run different Flutter versions, have different dependencies, without affecting your main workspace.
Core principle: Isolated workspace = safe experimentation + parallel development
Announce at start: "I'm using the flutter-worktrees skill to create an isolated workspace."
Git Worktrees允许你在不同目录中同时处理多个分支。每个工作区完全独立——你可以运行不同的Flutter版本、使用不同的依赖,且不会影响主工作区。
核心原则: 独立工作区 = 安全实验 + 并行开发
开始时告知: "我正在使用flutter-worktrees技能创建独立工作区。"
When to Use
使用场景
- Starting a new feature that needs isolation
- Working on experimental changes
- Need to compare implementations side-by-side
- Want to keep main workspace clean
- Running long-running tests in background
- 启动需要隔离的新功能开发
- 进行实验性修改
- 需要并排对比不同实现方案
- 希望保持主工作区整洁
- 在后台运行长时间的测试
The Process
操作流程
Step 1: Create Worktree
步骤1:创建工作区
bash
undefinedbash
undefinedFrom main repository
从主仓库执行
git worktree add ../flutter-app-feature-auth feature/auth
git worktree add ../flutter-app-feature-auth feature/auth
Or create new branch
或者创建新分支
git worktree add -b feature/auth ../flutter-app-feature-auth main
**Naming convention:** `../[project-name]-[feature-name]`git worktree add -b feature/auth ../flutter-app-feature-auth main
**命名规范:** `../[项目名称]-[功能名称]`Step 2: Navigate to Worktree
步骤2:进入工作区
bash
cd ../flutter-app-feature-authbash
cd ../flutter-app-feature-authStep 3: Flutter Setup (Critical for Flutter Projects!)
步骤3:Flutter配置(Flutter项目的关键步骤!)
bash
undefinedbash
undefinedInstall dependencies
安装依赖
flutter pub get
flutter pub get
Verify Flutter is working
验证Flutter是否正常工作
flutter doctor
flutter doctor
If needed, run code generation
如有需要,运行代码生成
flutter pub run build_runner build --delete-conflicting-outputs
undefinedflutter pub run build_runner build --delete-conflicting-outputs
undefinedStep 4: Verify Setup
步骤4:验证配置
bash
undefinedbash
undefinedCheck project state
检查项目状态
flutter analyze
flutter test
flutter analyze
flutter test
Should show no issues if setup is correct
如果配置正确,应该不会显示任何问题
undefinedundefinedStep 5: Work on Feature
步骤5:开发功能
Follow normal development workflow:
- flutter-brainstorming
- flutter-planning
- flutter-executing
All changes stay isolated in this worktree.
遵循常规开发流程:
- flutter-brainstorming
- flutter-planning
- flutter-executing
所有修改都会保留在这个独立工作区中。
Step 6: Cleanup (After Merge/Discard)
步骤6:清理(合并/废弃后)
bash
undefinedbash
undefinedFrom main repository
从主仓库执行
cd ../flutter-app # Back to main
cd ../flutter-app # 返回主工作区
Remove worktree
删除工作区
git worktree remove ../flutter-app-feature-auth
git worktree remove ../flutter-app-feature-auth
If branch was merged, it's already in main
如果分支已合并,它已同步到主分支
If discarded, the branch still exists and can be deleted:
如果废弃,分支仍然存在,可以删除:
git branch -D feature/auth
undefinedgit branch -D feature/auth
undefinedWorktree Directory Structure
工作区目录结构
parent-directory/
├── flutter-app/ # Main repository
│ ├── lib/
│ ├── test/
│ ├── pubspec.yaml
│ └── .git/ # Main git directory
├── flutter-app-feature-auth/ # Worktree 1
│ ├── lib/
│ ├── test/
│ ├── pubspec.yaml
│ └── .git # File pointing to main .git
└── flutter-app-feature-profile/ # Worktree 2
├── lib/
├── test/
├── pubspec.yaml
└── .gitparent-directory/
├── flutter-app/ # 主仓库
│ ├── lib/
│ ├── test/
│ ├── pubspec.yaml
│ └── .git/ # 主Git目录
├── flutter-app-feature-auth/ # 工作区1
│ ├── lib/
│ ├── test/
│ ├── pubspec.yaml
│ └── .git # 指向主.git的文件
└── flutter-app-feature-profile/ # 工作区2
├── lib/
├── test/
├── pubspec.yaml
└── .gitFlutter-Specific Considerations
Flutter专属注意事项
Dependencies
依赖管理
Each worktree has its own:
- directory
.dart_tool/ - (can differ if experimenting with versions)
pubspec.lock - Build cache
Always run after creating worktree!
flutter pub get每个工作区都有自己的:
- 目录
.dart_tool/ - (如果实验不同版本,内容可能不同)
pubspec.lock - 构建缓存
创建工作区后务必运行!
flutter pub getCode Generation
代码生成
If project uses code generation (freezed, json_serializable, etc.):
bash
flutter pub run build_runner build --delete-conflicting-outputs如果项目使用代码生成(freezed、json_serializable等):
bash
flutter pub run build_runner build --delete-conflicting-outputsIDE Setup
IDE配置
VS Code: Open worktree folder as new workspace
Android Studio: Open worktree folder as new project
VS Code: 将工作区文件夹作为新工作区打开
Android Studio: 将工作区文件夹作为新项目打开
Platform-Specific Builds
平台特定构建
Each worktree can have different:
- iOS simulator running
- Android emulator connected
- Web server running
No conflicts between worktrees!
每个工作区可以有不同的:
- 运行中的iOS模拟器
- 连接的Android模拟器
- 运行中的Web服务器
工作区之间不会有冲突!
Example Workflow
示例流程
bash
undefinedbash
undefined1. Create isolated workspace for auth feature
1. 为认证功能创建独立工作区
git worktree add -b feature/auth ../flutter-app-auth main
git worktree add -b feature/auth ../flutter-app-auth main
2. Navigate and setup
2. 进入并配置工作区
cd ../flutter-app-auth
flutter pub get
flutter pub run build_runner build --delete-conflicting-outputs
cd ../flutter-app-auth
flutter pub get
flutter pub run build_runner build --delete-conflicting-outputs
3. Verify
3. 验证配置
flutter analyze
flutter test
flutter analyze
flutter test
4. Work on feature (using flutter-craft skills)
4. 开发功能(使用flutter-craft技能)
... implement auth feature ...
... 实现认证功能 ...
5. When done, back to main
5. 完成后返回主工作区
cd ../flutter-app
cd ../flutter-app
6. Merge if ready
6. 准备好后合并
git merge feature/auth
git merge feature/auth
7. Cleanup
7. 清理工作区
git worktree remove ../flutter-app-auth
undefinedgit worktree remove ../flutter-app-auth
undefinedRed Flags
注意事项
Never:
- Forget in new worktree
flutter pub get - Edit main repository while expecting changes in worktree
- Delete worktree directory manually (use )
git worktree remove - Have same file open in IDE from both main and worktree
If worktree has issues:
bash
undefined绝对不要:
- 在新工作区中忘记运行
flutter pub get - 期望修改主仓库会同步到工作区
- 手动删除工作区目录(请使用)
git worktree remove - 在IDE中同时打开主工作区和子工作区的同一文件
如果工作区出现问题:
bash
undefinedList all worktrees
列出所有工作区
git worktree list
git worktree list
Prune stale worktree references
清理失效的工作区引用
git worktree prune
undefinedgit worktree prune
undefinedIntegration with Other Skills
与其他技能的集成
After creating worktree:
- Use flutter-brainstorming to design feature
- Use flutter-planning to create implementation plan
- Use flutter-executing or flutter-subagent-dev to implement
After feature complete:
- Use flutter-finishing to decide merge/PR/keep/discard
- Cleanup worktree after merge
创建工作区后:
- 使用flutter-brainstorming设计功能
- 使用flutter-planning制定实现计划
- 使用flutter-executing或flutter-subagent-dev进行开发
功能完成后:
- 使用flutter-finishing决定合并/提交PR/保留/废弃
- 合并后清理工作区
Quick Reference
快速参考
| Command | Purpose |
|---|---|
| Create worktree |
| Create with new branch |
| List all worktrees |
| Remove worktree |
| Clean stale references |
| Required after creating! |
| 命令 | 用途 |
|---|---|
| 创建工作区 |
| 创建工作区并新建分支 |
| 列出所有工作区 |
| 删除工作区 |
| 清理失效引用 |
| 创建工作区后必须执行! |