bambu-worktree
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseWorktree aislado para trabajar en paralelo
用于并行工作的隔离worktree
Crea un nuevo en con su propia rama, para que el usuario pueda tener varios requerimientos avanzando a la vez sin pisarse entre sí (sin / constantes en el mismo directorio de trabajo). Es project-agnostic: no asume nombre de rama por defecto, package manager, ni convención de ramas — las detecta o pregunta.
git worktree.worktrees/<feature>/stashcheckout在 路径下创建一个全新的 ,拥有独立分支,让用户可以同时推进多个需求而互不干扰(无需在同一个工作目录中频繁执行 / 操作)。它是项目无关的:不预设默认分支名、包管理器或分支规范——会自动检测或询问用户。
.worktrees/<feature>/git worktreestashcheckoutCuándo usar este skill
何时使用此skill
- "Crea un worktree para X."
- "Necesito trabajar en paralelo en Y sin tocar lo que ya tengo en progreso."
- "Aísla este feature en su propia carpeta."
- "Dame un checkout aparte para arreglar Z mientras sigo con lo otro."
- "New worktree for the login feature", "set up a parallel checkout for this bugfix."
- El usuario ya trae un nombre de rama específico en mente y solo quiere el worktree listo.
No lo uses para operaciones normales de branch dentro del mismo checkout () cuando el usuario no pidió aislamiento — esto es específicamente para trabajar varias cosas a la vez sin interferencia.
git checkout -b ...- 「给我创建一个用于X的worktree。」
- 「我需要并行处理Y,同时不影响我正在进行的工作。」
- 「把这个feature隔离到它自己的文件夹里。」
- 「给我一个单独的checkout来修复Z,我继续做其他的。」
- 「为登录功能新建worktree」、「为这个bug修复设置并行checkout」。
- 用户已经有明确的分支名称,只需要创建好对应的worktree。
当用户没有要求隔离时,不要将其用于同一个checkout内的常规分支操作()——此功能专门用于同时处理多项任务且互不干扰的场景。
git checkout -b ...Flujo de trabajo
工作流程
Paso 0 — Prerrequisitos
步骤0 — 前置条件
bash
git rev-parse --is-inside-work-tree # estás dentro de un repo git
git worktree list --porcelain | head -5Si no hay ningún argumento ni descripción del requerimiento en el mensaje del usuario, detente y pídele una descripción breve (o el nombre de rama que quiera usar) antes de continuar — la necesitas para nombrar la carpeta y la rama.
bash
git rev-parse --is-inside-work-tree # estás dentro de un repo git
git worktree list --porcelain | head -5如果用户的消息中没有任何参数或需求描述,请先暂停并向用户索要简短描述(或想要使用的分支名称)再继续——你需要用它来命名文件夹和分支。
Paso 1 — Ubicar la raíz del repo principal
步骤1 — 定位主仓库根目录
Los worktrees viven todos bajo en la raíz del repo principal (el primer worktree que lista ), nunca anidados dentro de otro worktree. Si ya estás parado dentro de un worktree existente, resuelve la raíz real con:
.worktrees/git worktree listbash
git worktree list --porcelain | sed -n '1,/^$/p' # el primer bloque es siempre el worktree principaly opera relativo a esa raíz, no al directorio actual.
.worktrees/所有worktree都存放在主仓库根目录下的 文件夹中(即 列出的第一个worktree),绝不能嵌套在另一个worktree内部。如果你当前已经在一个已有的worktree中,通过以下命令获取真实的根目录:
.worktrees/git worktree listbash
git worktree list --porcelain | sed -n '1,/^$/p' # el primer bloque es siempre el worktree principal并基于该根目录(而非当前目录)来操作 路径。
.worktrees/Paso 2 — Derivar el nombre del feature
步骤2 — 推导feature名称
A partir de la descripción del usuario, genera un slug en kebab-case simple: minúsculas, sin acentos, palabras separadas por guiones, sin prefijo de tipo de commit (, , …) y sin scope explícito — solo las 3-6 palabras que mejor identifiquen el requerimiento de forma única y legible.
feat/fix/- "agregar login con PIN a taquilla" →
agregar-login-pin-taquilla - "fix del cálculo de descuento por tipo de viaje" →
fix-calculo-descuento-tipo-viaje - "reporte de ventas por vendedor en Excel" →
reporte-ventas-vendedor-excel
Si el usuario ya te dio explícitamente el nombre de carpeta/rama que quiere usar, respétalo tal cual (solo normaliza a kebab-case si trae espacios o mayúsculas) en vez de reinterpretarlo.
根据用户的描述,生成一个简单kebab-case格式的slug:全小写、无重音、单词用连字符分隔,不带提交类型前缀(、 等),也不带明确的scope——仅用3-6个最能唯一且清晰标识需求的单词组成。
feat/fix/- 「为售票亭添加PIN登录功能」 →
agregar-login-pin-taquilla - 「修复按出行类型计算折扣的问题」 →
fix-calculo-descuento-tipo-viaje - 「按销售人员统计的Excel销售报表」 →
reporte-ventas-vendedor-excel
如果用户已经明确给出了想要使用的文件夹/分支名称,请直接沿用(如果包含空格或大写,仅规范化为kebab-case即可),不要重新解读。
Paso 3 — Detectar la rama base
步骤3 — 检测基础分支
Si el usuario indicó una rama base explícita, úsala. Si no, detecta la rama por defecto real del repo — nunca la hardcodees (no asumas , ni ):
developmainmasterbash
git branch --show-current
gh repo view --json defaultBranchRef --jq .defaultBranchRef.name 2>/dev/null \
|| git remote show origin 2>/dev/null | sed -n '/HEAD branch/s/.*: //p'- Si la rama actual coincide con la rama por defecto detectada, úsala como base sin preguntar — es el flujo normal de arrancar un feature nuevo.
- Si la rama actual es otra (ya estás parado en una feature branch, o dentro de otro worktree), pregúntale al usuario si quiere basar el nuevo worktree en esa rama o en la rama por defecto — no asumas.
Corre antes de crear el worktree para que la rama nueva parta de la punta real, no de una copia local desactualizada.
git fetch origin <rama-base>如果用户明确指定了基础分支,直接使用。否则,检测仓库的真实默认分支——绝对不要硬编码(不要预设是 、 或 ):
developmainmasterbash
git branch --show-current
gh repo view --json defaultBranchRef --jq .defaultBranchRef.name 2>/dev/null \
|| git remote show origin 2>/dev/null | sed -n '/HEAD branch/s/.*: //p'- 如果当前分支与检测到的默认分支一致,直接将其作为基础分支,无需询问——这是启动新feature的常规流程。
- 如果当前分支是其他分支(你已经在一个feature分支上,或者在另一个worktree中),询问用户希望将新worktree基于该分支还是默认分支——不要自行假设。
创建worktree之前,执行 ,确保新分支基于最新的远端代码,而非过时的本地副本。
git fetch origin <rama-base>Paso 4 — Guardas antes de ejecutar
步骤4 — 执行前检查
- Verifica que no exista ya (
.worktrees/<feature>ols .worktrees/). Si existe, avísale al usuario y pregunta si quiere otro nombre o si de hecho quiere reusar/entrar a ese worktree.git worktree list - Verifica que no exista ya una rama local o remota con ese mismo nombre (/
git branch --list <feature>). Si existe, avisa y confirma antes de seguir (podría no ser tuya, o podría ser una rama vieja que conviene retomar en vez de crear otra).git ls-remote --heads origin <feature>
- 检查 是否已经存在(通过
.worktrees/<feature>或ls .worktrees/命令)。如果存在,告知用户并询问是要换个名称,还是要复用/进入该worktree。git worktree list - 检查是否已经存在同名的本地或远端分支(通过 /
git branch --list <feature>命令)。如果存在,先告知用户并确认后再继续(该分支可能不属于你,或者是一个旧分支,更适合直接复用而非新建)。git ls-remote --heads origin <feature>
Paso 5 — Asegurar que .worktrees/
esté ignorada
.worktrees/步骤5 — 确保 .worktrees/
被忽略
.worktrees/Esta carpeta es un conjunto de checkouts locales en paralelo — nunca debe subirse al remoto. Antes de crear el worktree, revisa el del repo destino:
.gitignorebash
grep -qxF '.worktrees/' .gitignore 2>/dev/nullSi no está, agrega la línea al del repo (no al de este repo de skills) y dilo explícitamente en el reporte final — es un cambio a un archivo versionado, así que coméntalo con el usuario si prefieres confirmarlo antes de escribirlo.
.worktrees/.gitignore这个文件夹存放的是本地并行的checkout集合——绝对不能提交到远端仓库。创建worktree之前,检查目标仓库的 文件:
.gitignorebash
grep -qxF '.worktrees/' .gitignore 2>/dev/null如果不存在该条目,将 这一行添加到仓库的 文件中(不要加到本skill仓库的 里),并在最终报告中明确告知用户——这是对受版本控制的文件的修改,因此如果你希望更稳妥,可以在写入前先和用户确认。
.worktrees/.gitignore.gitignorePaso 6 — Crear el worktree
步骤6 — 创建worktree
bash
git worktree add -b <feature> .worktrees/<feature> origin/<rama-base>Usa explícito (no dejes que adivine el nombre de rama solo por el path) para que quede inequívoco qué rama se creó. Si no existe localmente todavía, usa a secas tras el del Paso 3.
-b <feature>git worktree addorigin/<rama-base><rama-base>fetchbash
git worktree add -b <feature> .worktrees/<feature> origin/<rama-base>显式使用 参数(不要让 仅根据路径猜测分支名),确保创建的分支名明确无误。如果 在本地还不存在,在步骤3执行完 后,直接使用 即可。
-b <feature>git worktree addorigin/<rama-base>fetch<rama-base>Paso 7 — Reporte final
步骤7 — 最终报告
Confirma al usuario:
- Ruta del worktree creado (, relativa a la raíz del repo principal).
.worktrees/<feature> - Nombre de la rama nueva y rama base de la que partió.
- Si agregaste al
.worktrees/, dilo explícitamente..gitignore - Sugiere el siguiente paso obvio: para trabajar ahí, o abrir esa carpeta como proyecto aparte si usa el flujo de
cd .worktrees/<feature>/una sesión nueva de Claude Code.EnterWorktree
向用户确认以下信息:
- 已创建的worktree路径(相对于主仓库根目录的 )。
.worktrees/<feature> - 新分支的名称以及其所基于的基础分支。
- 如果你向 中添加了
.gitignore,明确告知用户。.worktrees/ - 建议显而易见的下一步操作:执行 进入该目录工作,或者如果用户使用
cd .worktrees/<feature>流程/新的Claude Code会话,可以将该文件夹作为独立项目打开。EnterWorktree
Reglas clave
关键规则
- Nunca hardcodees la rama base por defecto (/
develop/main) — detéctala conmasterogh repo view, o pregúntala si hay ambigüedad.git remote show origin - Siempre verifica colisiones de nombre de carpeta y de rama (local y remota) antes de crear — nunca sobreescribas ni reutilices sin confirmar con el usuario.
- La carpeta es (oculta, con punto) en la raíz del repo principal, y debe estar en el
.worktrees/del repo destino — si falta, agrégala y avísalo..gitignore - Usa siempre explícito en
-b <feature>— nunca dejes que el nombre de la rama se infiera solo del path.git worktree add - No inventes el slug si el usuario ya dio un nombre de rama/carpeta explícito — respétalo, solo normaliza formato.
- 绝对不要硬编码默认基础分支(/
develop/main)——通过master或gh repo view检测,如果存在歧义则询问用户。git remote show origin - 始终检查名称冲突:创建前检查文件夹名和分支名(本地+远端)是否冲突——未经用户确认,绝不要覆盖或复用。
- worktree存放目录是主仓库根目录下的 (带点的隐藏目录),必须加入目标仓库的
.worktrees/——如果缺失则添加并告知用户。.gitignore - 在 命令中始终显式使用
git worktree add参数——绝不要让分支名仅通过路径推断。-b <feature> - 如果用户已经明确给出了分支/文件夹名称,不要自行生成slug——直接沿用,仅做格式规范化即可。