lazygit, una herramienta de UI de Git basada en terminal, combina la simplicidad de la línea de comandos con la intuición de una interfaz gráfica para ofrecer un entorno de trabajo rápido y consistente
- Diseñada en torno a la consistencia, la capacidad de descubrimiento y la interactividad, permite que incluso principiantes la aprovechen de inmediato con solo conocer los conceptos básicos de Git
- Con atajos de teclado estilo vim y una estructura visual clara, facilita la navegación rápida y acorta las tareas repetitivas
- Simplifica operaciones complejas de Git como parches por línea, rebase interactivo y cherry-pick, mejorando la productividad
- Basada en un framework TUI open source escrito en Go, también sirve como un caso de referencia para el diseño UX de otras herramientas para desarrolladores
Contexto de la aparición de LazyGit
- El autor descubrió la eficiencia de la herramienta al ejecutar
lazygit por casualidad mientras experimentaba con Neovim
- Después de eso, cambió todo su flujo de trabajo de Git a
lazygit
- Antes combinaba
git gui, gitk y la CLI, pero buscó una alternativa por interfaces anticuadas e inestabilidad
lazygit es simple, rápido y tiene una estructura compatible con la CLI, lo que le da confiabilidad
Características principales de LazyGit
Consistencia
- La interfaz está compuesta por varias “cajas de vista” que mantienen siempre la misma estructura visual
- Al seleccionar una caja de la izquierda, el contenido de la derecha cambia en coordinación
- Usa directamente la terminología y las abstracciones de Git, lo que reduce la curva de aprendizaje
- Ej.: permite familiarizarse de forma natural con conceptos estándar de Git como
bisect y hunk
- Adopta keybindings estilo vim (
h/j/k/l, q, /, y, c, a, f, p, r, etc.), lo que permite una operación rápida
- Limita la cantidad de comandos y sigue la filosofía Unix de “hacer una sola cosa y hacerla bien”
Capacidad de descubrimiento
- Muestra de inmediato la información necesaria al ejecutarse
- Repositorio actual, rama, estado del staging, commits recientes, stash, último comando, atajos, etc.
- Presenta la información sin sobrecarga visual para minimizar el cambio de contexto
- Los atajos pueden consultarse al instante mediante el footer inferior o la tecla
?
- El usuario puede entender intuitivamente su ubicación y estado actual en cualquier momento
Interactividad
- Guía operaciones complejas de Git mediante una interfaz interactiva
- Ej.: al hacer push, advierte sobre diferencias con el upstream; durante un rebase, confirma si será interactivo
- Durante procesos como rebase, resolución de conflictos o cambio de rama, realiza confirmaciones automáticas y propone acciones posteriores
- Permite operar con combinaciones de teclas sin necesidad de escribir directamente comandos como
pick/drop/squash
- Mejora la confianza y la velocidad del usuario con la mínima interrupción posible
Flujo de trabajo de Git mejorado
lazygit no agrega un flujo de trabajo nuevo, sino que mejora el uso de las funciones existentes de Git para que sea más seguro y rápido
- Su función de selección de parches por línea y por hunk permite restaurar código con gran precisión
- Se puede revertir o separar solo una parte de un commit
- Ejemplos de flujos abreviados principales
- Modificar un commit existente y hacer push:
2 space A P enter
- Crear un commit nuevo y hacer push:
2 space c <título> P
- Rebase de rama:
3 r i ... m c
- Eliminar un commit:
4 d
- Dividir un commit:
4 enter enter <c-p> n <título> enter
- Cherry-pick:
3 4 C 3 4 V
- Con el uso repetido, los atajos se vuelven hábitos de forma natural y la velocidad de trabajo mejora enormemente
Lecciones para la UX de herramientas de desarrollo
- La simplicidad, consistencia, capacidad de descubrimiento, valores predeterminados razonables e interactividad de
lazygit son excelentes principios de diseño para herramientas de desarrollo
- Se mantiene sano un ecosistema de configuración profunda, extensibilidad y contribuciones open source
- Está basado en un framework TUI (gocui) escrito 100% en Go, que también puede aprovecharse para desarrollar otras herramientas
- Muestra la posibilidad de crear nuevas herramientas CLI/TUI aplicando patrones de UX similares
Conclusión
lazygit es valorado no solo como una simple UI de Git, sino como un caso ejemplar de productividad para desarrolladores y diseño UX
- Incluso a medida que avanzan las funciones asistidas por IA, sigue cumpliendo un papel clave en el ámbito del control de versiones, donde la precisión y la confiabilidad siguen siendo esenciales
- Sigue evolucionando gracias a las contribuciones y la colaboración de la comunidad open source
- Cualquiera puede usarlo y contribuir, y ofrece una experiencia de Git rápida e intuitiva
1 comentarios
Comentarios en Hacker News
Antes me gustaban los git TUI centrados en teclado como magit, neogit y lazygit
pero ahora uso jujutsu(jj) en lugar de git
después de acostumbrarme al CLI de jj, empecé a usar jjui
seguido necesito dividir commits, y el plugin hunk.nvim es muy útil
además, para resolver conflictos con jj conflict, jj-diffconflicts es lo mejor
ahora con jj puedo editar el grafo de commits de forma tan natural como mover líneas de código
cuando quitas un hunk innecesario de un commit antiguo, luego se generan conflictos en cadena en los commits posteriores; me pregunto si habrá alguna herramienta que maneje eso automáticamente
me gusta cómo muestra los diffs separados por archivo, y esa es la única razón
aun así, me gustaría que hubiera más GUI dedicadas para jj. Cuando quiero ver varios cambios de un vistazo uso gg, pero no tiene side-by-side diff
al ver videos de git butler, pensé que estaría bien que la UI de jj evolucionara en esa dirección
me gustaría una GUI donde se pudieran mover cambios arrastrándolos o hacer split/rebase de forma interactiva
cada equipo tiene un git flow distinto, y los desarrolladores se enganchan con microoptimizaciones innecesarias o ni siquiera quieren aprenderlo
al final eso crea una dinámica donde cada equipo termina necesitando un experto en git
preferiría una herramienta que simplemente obligara a usar una sola forma de trabajo
Puede sonar gracioso, pero de todas las UI de git que he probado, no he encontrado ninguna mejor que SourceTree
para tareas simples es mucho más cómoda que el CLI, y la vista de estado de archivos e historial es realmente excelente
también es fácil hacer stage/unstage por hunk o por línea
eso sí, es una lástima que no tenga versión para Linux. He probado otras herramientas, pero siempre termino volviendo
últimamente también probé lazygit, y entre las TUI me pareció bastante buena
no tiene actualización automática, así que no choca con el CLI
Documentación de Git Extensions Commit
he perdido tiempo con montones de bugs y problemas raros. De verdad, hay que dejar SourceTree
Cuanto más uso git directamente, más noto lo irracional que es la interfaz del CLI de git
llevo 2 años usando jj, y ya no creo poder volver al CLI de git
veo demasiado seguido que la gente se confunde con git y termina creando problemas, así que prefiero recomendarles usar otra cosa
me gusta dividir cambios y confirmarlos desde el editor, pero jj todavía tiene poca integración con editores, así que al final mis commits quedan desordenados
Aunque mucha gente lo evita por el nombre, GitHub Desktop es bastante bueno
también funciona bien con repos fuera de GitHub, y facilita modificar commits y hacer cherry-pick por archivo o por línea
cada operación compleja viene con una explicación, así que es especialmente bueno para principiantes
le faltan funciones de merge y de grafo, pero aun así me parece mucho mejor que el CLI de git
cuando entra alguien nuevo al equipo, siempre hago que use GH Desktop. Cometen menos errores y entienden más rápido
para la gente que no tiene confianza con git, es la mejor opción
en cambio, he visto demasiados desarrolladores junior demasiado confiados con git arruinar repositorios
por eso se lo recomiendo mucho a mi equipo
Muchos usuarios de git no conocen git-absorb
encaja bien con cualquier git flow y reduce mucho el dolor de repartir cambios staged entre varios commits para corregirlos
la mayoría de las TUI no tienen una función así
además, no me gustan mucho las herramientas basadas en rust porque traen demasiadas dependencias
perdí confianza y al final dejé de usarlo. El hecho de que funcione demasiado como magia termina siendo incómodo
Yo sigo prefiriendo tig
tiene menos funciones, pero su UI es simple y rápida
lo uso sobre todo para agregar cosas al índice de forma incremental
VS Code es gratis, multiplataforma, y además ya lo usa muchísima gente
su GUI de git está bien lograda y cubre todos los flujos de trabajo comunes
normalmente uso el CLI, pero cuando ya tengo el proyecto abierto en VS Code, muchas veces hacer las cosas por GUI es más rápido e intuitivo
La combinación de LazyVim + tmux cambió por completo mi forma de usar git
configuré
ctrl-gpara que abra lazygit en un tmux floating pane desde el directorio actualasí puedo hacer operaciones de git al instante sin entrar a neovim ni cambiar de UI
para un flujo de trabajo centrado en terminal, es la experiencia más flexible y fluida
si agregas esto a
~/.tmux.confpuedes abrir el popup de lazygit conctrl-b ctrl-gy cerrarlo conqYo hago operaciones de git con comandos de voz + AI. Si no, me parece que
ctrl-rya es una UI suficienteAunque nadie lo ha mencionado todavía, Gitu también es un cliente bastante decente