PEOPLE DATA | AI | REMOTE LEADERSHIP & LEARNING

Git Worktrees + Cursor: trabaja en varias cosas sin freírte el cerebro

Infographic titled GIT WORKTREES EN CARPETAS - FLUJO DE TRABAJO SIMULTÁNEO showing a main Git repository box connecting to three folders: WORKTREE 1 (feature-A), WORKTREE 2 (hotfix), and WORKTREE 3 (experiment).

Leí un post de un compañero sobre usar git worktrees con un agente de IA para trabajar en data transformations y me hizo pensar un montón. Mi primera reacción fue: ¿para qué quiero reventarme la cabeza con varios worktrees abiertos a la vez? Ya me cuesta suficiente mantener el foco en lo que estoy haciendo, apropiarme de lo que construyo, entenderlo de verdad… como para fragmentarme en dos o tres contextos diferentes.

Y entonces tuve una iluminación. Aleluya.

No se trata de trabajar en proyectos completamente diferentes. Se trata de que, cuando lanzas tus tests en un Docker Container — que tarda lo suyo —, puedes seguir avanzando en otra cosa en vez de quedarte mirando cómo avanza el log. O incluso usarlos para PRs relacionadas que se alimentan entre sí. No es un context switching brutal entre mundos distintos. Es no estar bloqueado mientras esperas.

¿Qué es un git worktree?

En lugar de cambiar de rama con git checkout (y tener que hacer stash, o perder el estado de lo que tenías abierto), creas una carpeta separada vinculada al mismo repo pero en otra rama. Dos carpetas, dos ramas, cero conflictos.

git worktree add worktree-or-task-name feature/folder

Esto se hace una vez por tarea. La carpeta persiste hasta que la eliminas.

Abrir cada worktree en Cursor

Cada worktree es una carpeta. Cada carpeta se abre como una ventana de Cursor independiente. Tres formas:

Option A – Abrir una ventana desde el terminal:

cursor [folder]
cursor ~/projects/task-a
cursor .

O, primero creas el worktree…

Raulito-D mainfolder % git worktree list
/Users/raulantoncuadrado/git/mainfolder 3a68b9a805 [master]
Raulito-D mainfolder % git worktree add -b my_worktree_name my_folder
Preparando árbol de trabajo (nueva rama 'my_worktree_name')
HEAD está ahora en 3a68b9a805 something or none
Raulito-D mainfolder % git worktree list
/Users/raulantoncuadrado/git/mainfolder 3a68b9a805 [master]
/Users/raulantoncuadrado/git/mainfolder/my_folder 3a68b9a805 [my_worktree_name]
Raulito-D mainfolder % cd my_folder
Raulito-D my_folder % cursor .

Bueno. Una cosa. El cursor command no está disponible por defecto. Aunque es muy sencillo habilitarlo. En cursor…

  1. Cmd+Shift+P
  2. Escribe “Install cursor command”
  3. Selecciona.
Screenshot of a terminal or command line interface displaying various shell commands related to 'cursor'.

Está.

Opción: Nuevan ventana con profile

También desde el propio Cursor, puedes usar File -> New Window with profile. El profile es un conjunto de settings que puedes grabar y usar para distintos proyectos. Puedes usar esto, por ejemplo, si estás trabajando en un proyecto de datos y a la vez con Jupyter Notebooks donde haces EDA. Bueno, que hay muchas opciones.

¿Merece la pena?

Si terminas una cosa antes de empezar la siguiente, no. Ramas normales y una sola ventana van bien.

Pero si necesitas trabajar en varias cosas al mismo tiempo y no quieres arriesgarte a mezclas y descuidos… pues claramente. Mucho.


Spread the word

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

JOIN us!

Fancy getting RemoteFrog updates? - ¿Quieres estar al día de lo que pasa en RemoteFrog?

Discover more from Remote Frog

Subscribe now to keep reading and get access to the full archive.

Continue reading