Para trabajar en una segunda rama sin alterar el checkout de tu proyecto actual en Mac, crea un worktree de Git en una carpeta contigua. Cada worktree tiene sus propios archivos y su rama activa (checked-out), mientras comparte los datos del repositorio con el checkout principal. Créalo desde Terminal, abre su carpeta en Finder o en tu editor y elimínalo con Git cuando hayas terminado. Documentación sobre worktree de Git
Qué cambia con un worktree
Un worktree te proporciona otro directorio de trabajo conectado al mismo repositorio de Git. Esto significa que puedes mantener abierto, por ejemplo, tu checkout actual de main mientras una rama de funcionalidad (feature branch) tiene una carpeta y archivos independientes. Los cambios realizados en un directorio de trabajo no sobrescriben los archivos activos del otro. Git comparte los datos del repositorio, pero mantiene por separado el estado específico de cada worktree, como el índice y HEAD. Git: git-worktree
Las ramas se comparten entre los worktrees, y normalmente una rama local no puede estar activa (checked out) en dos worktrees al mismo tiempo. Los worktrees son ideales para tareas simultáneas e independientes; no son clones independientes del repositorio. Es posible que los archivos ignorados por Git, como la configuración local o los archivos generados por la compilación (build output), deban crearse por separado en la nueva carpeta.
Crear un worktree de funcionalidad en macOS
Abre Terminal y dirígete al directorio de tu proyecto existente. Reemplaza my-app por el nombre del directorio de tu repositorio. El ejemplo asume que se encuentra en ~/Projects/my-app y crea el nuevo checkout a su lado.
cd ~/Projects/my-app
git status --short
git worktree add -b feature/search-ui ../my-app-search-ui
El comando status te permite ver si el checkout actual tiene cambios pendientes antes de cambiar de contexto. El comando add -b crea una nueva rama local llamada feature/search-ui y la activa en el directorio contiguo my-app-search-ui. Git crea una rama a partir del HEAD actual cuando no se especifica un commit inicial. Elige una rama única y una ruta de destino que no esté ya en uso. Git: worktree add
Para una rama local existente que no esté activa en otro worktree, usa su nombre en lugar de -b y un nombre de rama nuevo:
git worktree add ../my-app-search-ui existing-branch
Si la rama ya está activa en otra parte, Git lo rechazará de forma predeterminada. No lo fuerces solo para eludir esta protección; usa una rama diferente o trabaja en el checkout que ya la contiene. Para crear un worktree a partir de una rama remota, haz un fetch del remoto primero si es necesario y sigue el comportamiento de ramas de seguimiento (tracking branches) de Git; verifica el nombre de la rama antes de agregarla.
Abrir el nuevo checkout en Finder y en tu editor
En Finder, navega hasta la carpeta contenedora que aloja ambos directorios de proyecto y luego abre my-app-search-ui. Puedes usar el comando Ir a la carpeta de Finder (Shift-Comando-G) e introducir la ruta completa, como ~/Projects/my-app-search-ui. Mantén visible el nombre del directorio en Finder o en tu editor para poder distinguirlo del checkout original.
Apple también documenta cómo abrir Terminal en una carpeta seleccionada desde Finder: muestra la barra de ruta con Visualización > Mostrar barra de ruta, haz Control-clic en la carpeta dentro de la barra de ruta y luego selecciona Abrir en Terminal. Para abrir otra ventana o pestaña de Terminal, usa Comando-N o Comando-T. La ubicación de la carpeta seleccionada se convierte en el directorio de trabajo para la acción de Finder. Apple: Abrir nuevas ventanas y pestañas de Terminal en el Mac
Abre la nueva carpeta como un proyecto independiente en tu editor utilizando el control para abrir carpetas documentado para dicho editor. El comportamiento de los editores varía; los worktrees de Git no crean ventanas de editor automáticamente ni configuran tu entorno de desarrollo. Los directorios de dependencias, los archivos ignorados, los archivos de entorno local y los servicios en ejecución pueden requerir una configuración independiente en cada checkout.
Comprobar qué checkout estás usando
Desde cualquiera de los directorios del proyecto, ejecuta:
git worktree list
Git mostrará el worktree principal y los worktrees vinculados, incluyendo sus rutas y las ramas que tienen activas. Antes de confirmar cambios (commit) o ejecutar comandos que modifiquen archivos, confirma la carpeta actual o ejecuta git status en ella. Esta sencilla comprobación ayuda a evitar el error común de realizar modificaciones en el checkout original cuando la intención era trabajar en el nuevo. Git: worktree list
Eliminar un worktree cuando la tarea esté terminada
Primero confirma con un commit o resguarda de algún otro modo el trabajo que necesites. Luego, desde cualquier worktree perteneciente al repositorio, elimina el checkout vinculado mediante su ruta:
git worktree remove ../my-app-search-ui
git worktree list
Normalmente, Git se niega a eliminar un worktree que contenga archivos rastreados modificados o archivos no rastreados (untracked). Revisa y resguarda esos archivos antes de la eliminación; --force anula la protección de Git y puede descartar trabajo. El comando elimina el directorio del worktree, por lo que no debes usarlo como sustituto de revisar lo que hay en su interior. Una vez eliminado, la rama permanece disponible en el repositorio a menos que se elimine por separado. Git: worktree remove
Si eliminaste la carpeta de un worktree manualmente, es posible que Git conserve su registro administrativo. Usa git worktree prune para limpiar los registros obsoletos; recurre preferentemente a git worktree remove para una limpieza normal. Si mueves un checkout vinculado en Finder, Git puede perder el rastro de su ubicación; usa git worktree move cuando corresponda o git worktree repair para volver a conectarlo. Git: worktree prune, move y repair
Una configuración práctica en Mac es tener una carpeta de worktree por tarea activa, con nombres de carpeta y de rama cortos y reconocibles. Mantén el checkout principal para su trabajo actual, crea un checkout contiguo para una tarea paralela y verifica la ruta antes de editar. Esto le da a cada tarea sus propios archivos de proyecto sin necesidad de cambiar repetidamente la rama del checkout original.
Fuentes
Open new Terminal windows and tabs on Mac — Soporte técnico de Apple