worktree-manager
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseWorktree Manager
Worktree 管理器
Skill para gestionar git worktrees siguiendo la estrategia de carpeta dentro del repositorio.
.worktrees/用于在仓库内按照目录策略管理Git worktree的Skill
.worktrees/Cuando usar esta Skill
何时使用此Skill
- Usuario pide crear un nuevo worktree o branch de trabajo
- Usuario pide listar worktrees activos
- Usuario pide limpiar worktrees despues de merge
- Usuario menciona "worktree", "nuevo branch", "feature branch"
- Usuario pide podar referencias huerfanas
- 用户请求创建新的worktree或工作分支
- 用户请求列出活跃的worktree
- 用户请求在合并后清理worktree
- 用户提到“worktree”、“新分支”、“功能分支”
- 用户请求清理孤立引用
Estructura de Worktrees
Worktree 结构
~/Projects/<github|gitlab>/<project>/
├── .worktrees/ # ignorado por .gitignore
│ ├── feature-x/ # worktree para branch feature-x
│ └── bugfix-123/ # worktree para branch bugfix-123
├── src/ # archivos del repo (master/main)
└── .gitignore # debe incluir .worktrees/~/Projects/<github|gitlab>/<project>/
├── .worktrees/ # 被.gitignore忽略
│ ├── feature-x/ # 对应feature-x分支的worktree
│ └── bugfix-123/ # 对应bugfix-123分支的worktree
├── src/ # 仓库文件(master/main分支)
└── .gitignore # 需包含.worktrees/Proceso
流程
Paso 0: Verificar contexto
步骤0:检查上下文
Antes de cualquier operacion, verificar que estamos en un repositorio git:
bash
undefined在执行任何操作之前,检查当前是否处于Git仓库中:
bash
undefinedVerificar que es un repo git
检查是否为Git仓库
git rev-parse --is-inside-work-tree
git rev-parse --is-inside-work-tree
Verificar rama actual (debe ser main o master para operaciones desde root)
检查当前分支(从根目录执行操作时必须为main或master分支)
git branch --show-current
---git branch --show-current
---Comandos Disponibles
可用命令
1. Setup Inicial
1. 初始设置
Ejecutar una vez por proyecto para habilitar worktrees:
bash
undefined每个项目只需执行一次以启用worktree:
bash
undefinedVerificar si .worktrees/ esta en .gitignore
检查.worktrees/是否在.gitignore中
grep -q "^.worktrees/$" .gitignore 2>/dev/null || echo ".worktrees/" >> .gitignore
grep -q "^.worktrees/$" .gitignore 2>/dev/null || echo ".worktrees/" >> .gitignore
Crear carpeta .worktrees si no existe
如果不存在则创建.worktrees目录
mkdir -p .worktrees
mkdir -p .worktrees
Verificar estado
检查状态
cat .gitignore | grep worktrees
Si `.worktrees/` no estaba en `.gitignore`, hacer commit:
```bash
git add .gitignore
git commit -m "chore: ignore worktrees folder"cat .gitignore | grep worktrees
如果`.worktrees/`不在.gitignore中,则提交更改:
```bash
git add .gitignore
git commit -m "chore: ignore worktrees folder"2. Crear Worktree
2. 创建Worktree
Para crear un nuevo worktree con branch nuevo:
bash
undefined创建带有新分支的worktree:
bash
undefinedSintaxis: git worktree add .worktrees/<nombre-branch> -b <nombre-branch>
语法:git worktree add .worktrees/<分支名称> -b <分支名称>
git worktree add .worktrees/feature-nueva-funcionalidad -b feature-nueva-funcionalidad
El branch debe seguir convenciones:
- `feature/<descripcion>` o `feature-<descripcion>` para nuevas features
- `bugfix/<descripcion>` o `bugfix-<descripcion>` para correcciones
- `hotfix/<descripcion>` para arreglos urgentes
- `chore/<descripcion>` para tareas de mantenimientogit worktree add .worktrees/feature-nueva-funcionalidad -b feature-nueva-funcionalidad
分支需遵循命名规范:
- `feature/<描述>` 或 `feature-<描述>` 用于新功能
- `bugfix/<描述>` 或 `bugfix-<描述>` 用于修复bug
- `hotfix/<描述>` 用于紧急修复
- `chore/<描述>` 用于维护任务3. Listar Worktrees
3. 列出Worktree
Ver todos los worktrees activos:
bash
git worktree listOutput esperado:
/Users/user/Projects/github/mi-proyecto abc1234 [main]
/Users/user/Projects/github/mi-proyecto/.worktrees/feature-x def5678 [feature-x]查看所有活跃的worktree:
bash
git worktree list预期输出:
/Users/user/Projects/github/mi-proyecto abc1234 [main]
/Users/user/Projects/github/mi-proyecto/.worktrees/feature-x def5678 [feature-x]4. Trabajar en Worktree
4. 在Worktree中工作
Despues de crear, navegar al worktree:
bash
cd .worktrees/<nombre-branch>创建完成后,进入对应的worktree:
bash
cd .worktrees/<分支名称>Trabajar normalmente...
正常工作...
hacer cambios...
进行更改...
Commit y push
提交并推送
git add .
git commit -m "feat: descripcion del cambio"
git push -u origin <nombre-branch>
undefinedgit add .
git commit -m "feat: 变更描述"
git push -u origin <分支名称>
undefined5. Cleanup despues de Merge
5. 合并后清理
Una vez que el PR fue mergeado, limpiar:
bash
undefinedPR合并完成后,进行清理:
bash
undefinedDesde el directorio raiz del proyecto (no desde el worktree)
从项目根目录执行(不要在worktree内执行)
Paso 1: Remover worktree
步骤1:移除worktree
git worktree remove .worktrees/<nombre-branch>
git worktree remove .worktrees/<分支名称>
Paso 2: Eliminar branch remoto (si no se elimino con el PR)
步骤2:删除远程分支(如果PR合并时未自动删除)
git push origin --delete <nombre-branch>
git push origin --delete <分支名称>
Paso 3: Eliminar branch local si existe
步骤3:如果存在本地分支则删除
git branch -d <nombre-branch>
undefinedgit branch -d <分支名称>
undefined6. Podar Referencias Huerfanas
6. 清理孤立引用
Limpiar referencias a worktrees que fueron eliminados manualmente:
bash
git worktree prune清理手动删除的worktree引用:
bash
git worktree pruneFlujo Completo de Trabajo
完整工作流程
Ejemplo: Nueva Feature
示例:新功能开发
bash
undefinedbash
undefined1. Asegurar que estamos en main/master actualizado
1. 确保当前处于已更新的main/master分支
git checkout main
git pull origin main
git checkout main
git pull origin main
2. Verificar setup (primera vez)
2. 检查初始设置(首次使用时)
grep -q "^.worktrees/$" .gitignore || echo ".worktrees/" >> .gitignore
grep -q "^.worktrees/$" .gitignore || echo ".worktrees/" >> .gitignore
3. Crear worktree para la feature
3. 为该功能创建worktree
git worktree add .worktrees/feature-auth -b feature-auth
git worktree add .worktrees/feature-auth -b feature-auth
4. Ir al worktree
4. 进入worktree
cd .worktrees/feature-auth
cd .worktrees/feature-auth
5. Desarrollar, commit, push
5. 开发、提交、推送
... hacer cambios ...
... 进行更改 ...
git add .
git commit -m "feat: add authentication module"
git push -u origin feature-auth
git add .
git commit -m "feat: 添加认证模块"
git push -u origin feature-auth
6. Crear PR (desde GitHub CLI o web)
6. 创建PR(通过GitHub CLI或网页)
gh pr create --title "feat: add authentication module" --body "..."
gh pr create --title "feat: add authentication module" --body "..."
7. Despues del merge, volver al root y limpiar
7. 合并完成后,返回根目录并清理
cd ../.. # volver a raiz del proyecto
git worktree remove .worktrees/feature-auth
git push origin --delete feature-auth
undefinedcd ../.. # 回到项目根目录
git worktree remove .worktrees/feature-auth
git push origin --delete feature-auth
undefinedEjemplo: Bugfix Rapido
示例:快速修复Bug
bash
undefinedbash
undefinedDesde main actualizado
从已更新的main分支开始
git pull origin main
git pull origin main
Crear worktree para el fix
为修复创建worktree
git worktree add .worktrees/bugfix-login-error -b bugfix-login-error
git worktree add .worktrees/bugfix-login-error -b bugfix-login-error
Trabajar en el fix
进行修复工作
cd .worktrees/bugfix-login-error
cd .worktrees/bugfix-login-error
... fix ...
... 修复 ...
git add . && git commit -m "fix: resolve login error on mobile"
git push -u origin bugfix-login-error
git add . && git commit -m "fix: 解决移动端登录错误"
git push -u origin bugfix-login-error
Crear PR
创建PR
gh pr create --title "fix: resolve login error" --body "..."
gh pr create --title "fix: resolve login error" --body "..."
Despues del merge
合并完成后
cd ../..
git worktree remove .worktrees/bugfix-login-error
---cd ../..
git worktree remove .worktrees/bugfix-login-error
---Principios Clave
核心原则
| Principio | Descripcion |
|---|---|
| Worktrees son temporales | No son casas permanentes, se eliminan despues del merge |
| Main siempre limpio | El repo principal siempre esta en main/master |
| Nombres descriptivos | Carpeta del worktree = nombre del branch |
| Cleanup obligatorio | Siempre limpiar despues del merge del PR |
| 原则 | 描述 |
|---|---|
| Worktree 是临时的 | 不是永久存在的,合并后需删除 |
| Main分支始终保持干净 | 主仓库始终处于main/master分支 |
| 名称具有描述性 | Worktree目录名称 = 分支名称 |
| 必须执行清理 | PR合并后务必进行清理 |
Troubleshooting
故障排除
Error: "worktree already exists"
错误:"worktree already exists"
El worktree ya existe. Listar y verificar:
bash
git worktree list
ls -la .worktrees/该worktree已存在。列出并检查:
bash
git worktree list
ls -la .worktrees/Error: "branch already exists"
错误:"branch already exists"
El branch ya existe. Opciones:
bash
undefined该分支已存在。可选方案:
bash
undefinedOpcion 1: Usar branch existente (sin -b)
方案1:使用已存在的分支(不加-b参数)
git worktree add .worktrees/feature-x feature-x
git worktree add .worktrees/feature-x feature-x
Opcion 2: Eliminar branch viejo primero
方案2:先删除旧分支
git branch -D feature-x
git worktree add .worktrees/feature-x -b feature-x
undefinedgit branch -D feature-x
git worktree add .worktrees/feature-x -b feature-x
undefinedError: "is already checked out"
错误:"is already checked out"
El branch esta checked out en otro lugar:
bash
undefined该分支已在其他位置被检出:
bash
undefinedVer donde esta el branch
查看分支所在位置
git worktree list
git worktree list
Remover el worktree anterior primero
先移除之前的worktree
git worktree remove .worktrees/<branch-name>
undefinedgit worktree remove .worktrees/<分支名称>
undefinedLimpiar worktrees huerfanos
清理孤立的worktree
Si se eliminaron carpetas manualmente sin :
git worktree removebash
git worktree prune
git worktree list # verificar que se limpio如果手动删除了目录但未执行:
git worktree removebash
git worktree prune
git worktree list # 检查是否已清理Preguntas al Usuario
向用户确认的问题
Antes de crear un worktree, preguntar:
- Nombre del branch: "Como quieres llamar al branch?" (sugerir formato o
feature-*)bugfix-* - Confirmar estructura: Si es primera vez, confirmar que se agregara a
.worktrees/.gitignore
Antes de cleanup, confirmar:
- PR mergeado?: "El PR ya fue mergeado? Confirmar antes de eliminar el worktree."
- Branch remoto: "Eliminar tambien el branch remoto?"
创建worktree之前,需询问:
- 分支名称:“你想给分支起什么名字?”(建议使用或
feature-*格式)bugfix-* - 确认结构:如果是首次使用,确认是否将添加到.gitignore中
.worktrees/
清理之前,需确认:
- PR是否已合并?:“PR是否已完成合并?请确认后再删除worktree。”
- 远程分支:“是否同时删除远程分支?”