Log in to leave a comment
No posts yet
El tiempo de un desarrollador es caro. Sin embargo, solemos desperdiciar una parte considerable de ese valioso tiempo en el cambio de contexto (context switching) en lugar de escribir código. El proceso de ejecutar git stash, cambiar de rama, volver y hacer stash pop para resolver conflictos ante una solicitud de hotfix urgente mientras se desarrolla una funcionalidad, fragmenta la concentración incluso de los ingenieros senior.
Git estándar fue diseñado para la gestión de historiales lineales. Se basa en la premisa de realizar una sola tarea a la vez. Pero la realidad laboral es compleja. Es necesario desarrollar nuevas funciones mientras se integran simultáneamente comentarios de varias revisiones de código. En 2026, ha llegado el momento de reconocer las limitaciones de Git y hacer que nuestras herramientas evolucionen. GitButler CLI, o but, va más allá de ser una simple herramienta de conveniencia: cambia el paradigma del control de versiones.
El arma más poderosa de GitButler es su capacidad para activar múltiples ramas simultáneamente en un solo directorio de trabajo. Esto es algo que era imposible en el Git tradicional.
Git estándar mantiene un único puntero HEAD en cualquier momento dado. En cambio, GitButler mantiene un estado donde todas las ramas virtuales (Lanes) actualmente activas se fusionan en tiempo real a través de una rama especial llamada gitbutler/workspace.
| Elemento de comparación | Git estándar (Vanilla) | GitButler (Virtual Branches) |
|---|---|---|
| Estado del área de trabajo | Solo existe una rama a la vez | Coexisten cambios de varias ramas virtuales |
| Cambio de contexto | Stash + Checkout (segundos a minutos) | Instantáneo (cambio de asignación lógica) |
| Gestión de conflictos | El rebase debe detenerse obligatoriamente | Se pueden continuar las tareas preservando el conflicto como un "estado" |
Gracias a esta estructura, el IDE o el compilador reconocen múltiples tareas como un único árbol de fuentes consistente sin necesidad de configuraciones adicionales. Esto significa que es posible realizar multitarea sin interrumpir el flujo de trabajo.
Veamos metodologías específicas que, más allá de la simple comodidad, reducen físicamente la velocidad de trabajo.
¿Qué haría si descubre una errata mientras escribe una lógica compleja? Antes, tenía que detener lo que estaba haciendo. Ahora, simplemente corríjalo en el acto e introduzca but branch new fix-typo. Manteniendo el área de trabajo tal como está, puede asignar lógicamente solo ese cambio específico (Hunk) a una nueva rama.
El historial de commits es una narrativa que se entrega a los compañeros. Los pasos intermedios desordenados deben omitirse. GitButler introdujo el comando but rub para eliminar la complejidad de rebase -i. Es una forma de "frotar" y absorber las correcciones en un commit específico. Al ejecutarlo, dicho commit se modifica (Amend) instantáneamente y sus commits superiores se reapilan (Restacking) automáticamente. El sistema "First Class Conflict", que elimina la necesidad de detener el trabajo debido a conflictos durante un rebase, respalda esta función.
El núcleo de la actualización de 2026 es el marcado. Si designa un commit específico como marca activa, todos los cambios posteriores se acumularán automáticamente en ese punto.
Esto demuestra su poder especialmente cuando se utilizan agentes de IA como Claude Code o Cursor. Fusiona automáticamente los numerosos fragmentos de código que genera el agente en una unidad lógica limpia, asegurando que el historial siempre mantenga su forma final. La molestia de tener que hacer commit --fixup y luego acordarse del autosquash desaparece por completo.
El mayor temor al adoptar una nueva herramienta es la pérdida de datos. GitButler ofrece un Oplog más sofisticado que el reflog de Git. Dado que registra una instantánea completa antes de cada cambio de datos, incluso si borra un commit por error o arruina un rebase, un solo but undo restaurará perfectamente hasta el estado de resolución de conflictos.
Además, para los usuarios avanzados, todos los comandos admiten el flag JSON (but status -j). Combinando esto con jq, se pueden implementar scripts de automatización que seleccionen y suban solo ramas virtuales específicas según los resultados de CI en apenas unas pocas líneas.
but config target origin/main.but setup.La incomodidad de los stash y checkout que usamos a diario no era, de hecho, algo inevitable. No fuerce su pensamiento a los límites de la herramienta.
El trabajo paralelo a través de ramas virtuales y el refinamiento intuitivo del historial proporcionan al desarrollador tranquilidad psicológica. La certeza de que puede deshacer errores y colaborar sin interrumpir su flujo marca la diferencia en la productividad. Pruebe a escribir but status en su terminal ahora mismo. En el momento en que vea cuánto más lógico y libre puede ser su directorio de trabajo, no podrá volver a la ineficiencia del pasado.