Ramas y revisión

Una sesión de rama es una sesión que trabaja en su propia rama git, en su propia copia de la carpeta de la que vino. Por debajo esto es un worktree de git: una segunda copia de trabajo del mismo repositorio, que comparte su historia pero tiene sus propios archivos y su propio índice. Tu trabajo en la sesión original no se toca. Cuando la rama está lista, la fusionas desde la sesión misma.

Usa una rama para probar una idea al lado de la línea principal de trabajo, para repartir una tarea entre varios agentes que no se pisen los archivos sin confirmar unos a otros, o para dejar que un agente explore algo que quizá descartes.

Este capítulo cubre también la ventana de revisión, que funciona para cualquier sesión con carpeta, sea rama o no.

Iniciar una rama

Ramifica cualquier sesión que tenga carpeta:

  • haz clic derecho en ella en la barra lateral y elige Nueva rama…
  • elige Nueva rama… en el menú ⋯ del encabezado de la sesión
  • elige Nueva rama… en la paleta ⌘K, que actúa sobre la sesión del escenario

La hoja Nueva rama dice "Una sesión propia, sobre una copia de carpeta con su propia rama git. Tu trabajo en «sesión» no se toca; fusiónala cuando esté lista." Tiene estas partes:

CampoPara qué sirve
¿Qué debe hacer?El primer mensaje de la nueva sesión, por ejemplo "Prueba a pasar la caché de sesiones a SQLite". Déjalo vacío para abrir el agente inactivo.
NombreEl nombre de la sesión y el origen del nombre de su rama. Déjalo vacío y el nombre se toma del mensaje.
AgenteQué agente corre en la rama. Por omisión, el agente de la sesión de la que ramificaste.
Partir deLa rama de partida. La primera entrada es la rama actual de la carpeta, "rama (actual)", o El commit actual en una copia separada. Siguen las otras ramas locales, las de commit más reciente primero. Ver la nota de abajo.
  • Partir de (rama actual): "En su último commit: los cambios sin confirmar se quedan atrás. Fusiona de vuelta en ella."
  • Partir de (otra rama): "En el último commit de rama, y fusiona de vuelta en rama." La rama de la que partes es también la rama en la que la sesión fusiona de vuelta.

Bajo los campos, la hoja muestra la rama que creará, wt/<nombre>. El nombre pasa a minúsculas, y los demás caracteres se convierten en guiones. Haz clic en Iniciar (⌘⏎).

Nota: solo se ramifica el trabajo confirmado. Los cambios sin confirmar de la carpeta original se quedan ahí y no se copian a la copia nueva.

Qué comprueba la hoja primero

La hoja pregunta a la máquina qué es la carpeta ("Comprobando carpeta…") y se adapta:

  • Un repositorio: el selector Partir de descrito arriba. Si el repositorio tiene un archivo .worktreeinclude, la hoja añade "También copia dentro, como dice .worktreeinclude: …" seguido de los archivos que lista. Son archivos que git no rastrea, como un .env local, que se copian a la copia nueva.
  • Un repositorio sin ningún commit: "El repositorio no tiene ningún commit todavía, así que la rama parte de un primer commit vacío. Los archivos de la carpeta se quedan atrás."
  • No es un repositorio: "carpeta no es todavía un repositorio git, y una rama necesita uno." Marca Convertirla en uno (git init) para ejecutar git init ahí. "Todo lo que hay en la carpeta entra en un primer commit, del que parte la rama." Iniciar está desactivado si esta casilla no está marcada.
  • La máquina no está en ejecución: "La máquina no está en ejecución: la carpeta se comprueba en cuanto arranque." La opción Si no es un repositorio git, convertirla en uno se aplica cuando la máquina arranca.

Consejo: los agentes también pueden iniciar ramas, con la herramienta worktree_create del servidor MCP bromure-delegation. Una rama así aparece exactamente como una que hubieras iniciado tú. Ver Agentes trabajando juntos.

Una sesión de rama

Una sesión de rama queda anidada bajo la sesión de la que vino en la barra lateral. Su fila añade un glifo de rama y una línea de estado como "3 commits". La línea de estado cuenta:

  • commits por delante de la rama de la que vino ("1 commit", "n commits")
  • archivos sin confirmar ("n archivos sin confirmar")
  • commits por detrás ("n por detrás")

Dice "aún sin cambios" hasta el primer cambio. Los recuentos se leen de la máquina cada 20 segundos aproximadamente mientras esté en marcha.

En el encabezado de la sesión, junto a la carpeta, una etiqueta muestra el nombre de la rama y los mismos recuentos. Pasa el cursor para leer "Su propia rama git, desde padre: fusiónala cuando esté lista".

La sesión de rama «Reintentos del webhook de reembolso» en el escenario, Lista: el encabezado dice @refunds · Lista · 6 min · Claude Code · Payments API · ~/payments-api · refund-retries 3 commits, con un botón partido Fusionar en main a la derecha. La fila de la barra lateral, anidada en su sala, muestra un glifo de rama y «Lista · 3 commits».

Fusionar

En cuanto la rama tiene cambios, el encabezado muestra un botón partido, Fusionar en padre.

Haz clic en la parte principal para fusionar la rama en la que vino. Entonces la copia y la rama se eliminan, y la sesión se archiva. La sesión sigue legible, con una línea de estado de "Fusionada en padre".

La parte de la flecha abre las demás opciones, que también están en la sección Rama de los menús ⋯ y contextual de la sesión:

ElementoQué hace
Revisar cambiosAbre la ventana de revisión.
Fusionar en padreLo mismo que el botón (solo menús).
Squash y fusionar en padreDeja toda la rama como un solo commit ("Squash-merge rama") y luego elimina la copia.
Fusionar y seguir trabajando en la ramaFusiona, pero conserva la copia, la rama y la sesión, para que el agente pueda seguir.
Abrir una pull requestPide al agente que confirme lo pendiente, empuje la rama y abra una pull request con gh pr create contra la rama padre. Responde con la URL. Esto necesita una credencial de GitHub en la máquina. Ver Credenciales.
Abrir terminal aquíUn terminal de Linux en la copia de la rama.
Descartar rama…Elimina la copia, la rama y la sesión tras una confirmación.

Una fusión va así:

  1. Una rama limpia se fusiona al instante. Mientras corre, el encabezado muestra "Fusionando en padre…".
  2. El trabajo sin confirmar o un conflicto pasa al agente. Cuando la rama tiene archivos sin confirmar, o la fusión entra en conflicto, Bromure deshace la fusión y deja todo limpio. Entonces pide al agente de la propia sesión, en su conversación, que confirme el trabajo, fusione y resuelva los conflictos que haya. El encabezado dice "Fusionando en padre: el agente lo está terminando", y puedes seguirlo en el chat. Si git no tiene identidad en la máquina, el commit de fusión se hace como Bromure <bromure@localhost>.
  3. Bromure comprueba que la fusión ha aterrizado antes de eliminar nada. Si no ha aterrizado tras 30 minutos, el estado pasa a Fusión atascada: "La fusión no ha aterrizado tras 30 minutos: pregunta al agente en qué punto está." El botón dice entonces Reintentar fusión.

Una fusión que estaba en marcha cuando saliste se retoma en el siguiente arranque.

Cuando un agente pide fusionar

Un agente puede pedir fusionar una rama con la herramienta worktree_merge. Puede pedirlo para su propia rama, o para una iniciada desde su sesión. Nunca fusiona por su cuenta. Aparece una banda bajo el encabezado de la sesión: "Agente pide fusionar rama en destino". La línea de debajo da los recuentos de la rama, "Como un solo commit comprimido" si el agente pidió un squash, y "La copia se elimina en cuanto haya aterrizado."

  • Revisar cambios abre la ventana de revisión.
  • Ahora no rechaza. Se le dice al agente que no vuelva a pedirlo salvo que tú lo saques.
  • Fusionar (o Squash y fusionar) ejecuta la fusión como se describe arriba. Cuando aterriza, se informa al agente que lo pidió.

Archivar o eliminar una sesión de rama

Archivar o eliminar una sesión de rama cuyo trabajo no está fusionado pregunta qué pasa con la rama: "¿Archivar «sesión» — y su rama?" o "¿Eliminar «sesión» — y su rama?".

  • Conservar rama deja la copia y la rama en la máquina, para que puedas fusionarla o retomarla más tarde. La máquina ya no la reabre al arrancar. Reanudar la sesión la abre de nuevo.
  • Descartar rama elimina la copia y la rama junto con la sesión. "rama tiene trabajo sin fusionar (…)" te dice qué perderías.

Si no se hizo nada en la rama ("Todavía no se ha hecho nada en rama, así que no hay nada que perder al eliminarla."), Descartar rama es la opción por omisión.

Descartar explícitamente, con Descartar rama…, confirma siempre primero: "¿Descartar «sesión»? La rama rama y su copia se eliminan con la sesión. Esto no se puede deshacer."

Ramas en una máquina

Es fácil perder la pista de las ramas en cuanto su sesión se archiva, se fusiona o desaparece. Ramas en esta máquina… abre una ventana que lista todas las ramas que Bromure creó en una máquina. La encuentras en el menú ⋯ del encabezado de la sesión y al hacer clic derecho en la cápsula de la máquina del encabezado.

La ventana, titulada "Ramas en máquina", cuenta "n ramas · n quedaron atrás". Cada fila muestra:

  • el nombre de la rama, y de quién es: En una sesión, Sesión en pausa, Sesión archivada, Fusionada, o Sin sesión
  • la rama, una flecha, y la rama en la que fusiona
  • qué contiene, y cuándo fue su último commit
  • la ruta de su copia en la máquina

Las acciones de cada fila dependen de quién es la rama:

  • Revisar y Mostrar sesión para una rama que tiene sesión.
  • Abrir en una sesión para una que no la tiene. Esto inicia el agente por omisión de la máquina en la copia de la rama. La nueva sesión es una sesión de rama completa, así que fusionar, revisar y descartar funcionan todos.
  • El botón de papelera, "Descartar la rama y su copia", pregunta antes. Si la rama tiene una sesión archivada, esa sesión también se elimina.

Solo sin sesión reduce la lista a las ramas que quedaron atrás. ⌘R actualiza. Las ramas se leen en vivo de la máquina, así que la máquina debe estar en ejecución: "Las ramas se leen en vivo de la máquina: arráncala y actualiza."

La ventana de revisión

La ventana de revisión muestra los cambios de una sesión como un diff y te permite comentarlos. No es solo para ramas. Hay tres maneras de abrirla:

  • Revisar cambios, desde el menú ⋯ de la sesión, los menús Rama, la paleta ⌘K, o la banda de petición de fusión.
  • La línea … archivos cambiados bajo una respuesta del agente en el chat. La ventana se abre entonces solo con los archivos que ese turno cambió ("Cambiados en este turno"). Haz clic en Mostrar todo para verlo todo, y en Este turno para volver a estrechar.
  • Revisar en la ventana de ramas.

La ventana se titula "Revisión — sesión". Sus partes:

  • El selector de comparación ("Con qué se comparan los cambios"):
    • Desde padre existe solo para las sesiones de rama, y es su opción por omisión. Muestra todo lo que la rama tiene y su padre no.
    • Sin confirmar muestra los cambios todavía no confirmados. Es la opción por omisión para las demás sesiones.
    • Último commit muestra el commit más reciente.
  • La lista de archivos muestra cuántos archivos cambiaron, "n de n vistos" con una barra de progreso, y los commits de la rama. Los archivos nuevos que git aún no rastrea están incluidos y contados ("n archivos nuevos aún no añadidos a git"). Haz clic en un archivo para saltar a él.
  • Marcar como visto. El círculo junto a cada archivo lo marca como mirado, y se pliega. La marca está atada al diff actual del archivo, así que vuelve si el archivo cambia otra vez.
  • El diff. Pasa el cursor por una línea para comentarla. También puedes comentar un archivo ("Un comentario sobre este archivo") o, en el campo de abajo, todo el cambio.
  • El encabezado tiene un botón Actualizar (⌘R) y Abrir terminal, más el botón de fusión en una sesión de rama.

Comentarios

Un comentario que añades (⏎) es un borrador: "espera con los demás hasta que los envíes". ⌥⏎ añade una línea nueva. La × quita un borrador.

Enviar n comentarios al agente (⇧⌘⏎) envía todos los borradores al agente de la sesión como un solo mensaje numerado, cada comentario con su archivo y línea, y pide al agente que los atienda. Si el agente no está en marcha, el mensaje lo reanuda. Los comentarios enviados se quedan en la ventana marcados "enviado". Los comentarios y las marcas de visto se guardan con la sesión y sobreviven al cierre de la ventana.

Los cambios se leen en vivo de la máquina. Si está apagada, la ventana dice "No se puede alcanzar la máquina": arranca la máquina y actualiza.

Nota: las tareas de código usan la misma ventana de revisión, con botones propios de las tareas como Devolver con n comentarios.

Terminales de máquina

Las pestañas del terminal de Linux de una máquina mantienen las acciones de worktree más antiguas: Nuevo worktree (⇧⌘G), Fusionar worktree (⇧⌘M) y Adjuntar un terminal, en el menú Espacios de trabajo. Ver Máquinas. Para las sesiones de agente, las acciones de rama de arriba las reemplazan.

En un servidor reflejado y en iOS

Las sesiones de rama, la fusión, la banda de petición de fusión, la ventana de revisión y la ventana de ramas funcionan todas en una ventana de cliente pesado que refleja otro Mac. Los clientes de iPhone y iPad ofrecen Nuevo worktree… en el menú de pulsación larga de una sesión, que abre la misma hoja de rama. Donde aparece su menú de rama, Descartar rama… abre un submenú, Descartar: esto no se puede deshacer, en lugar del diálogo de confirmación.