12 puntos por GN⁺ 2025-11-11 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2025-11-11
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

    • Gracias por los enlaces a varias herramientas. Me pregunto si conoces alguna otra herramienta que permita separar o recombinar diffs en una serie de parches
      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
    • Yo también me pasé por completo de git a jj. Aun así, la vista de diff de lazygit me parece más limpia, así que todavía uso esa parte de lazygit
      me gusta cómo muestra los diffs separados por archivo, y esa es la única razón
    • Yo también estoy migrando a jj. Todavía no lo he aplicado a todos mis proyectos, pero es cuestión de tiempo
      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
    • El problema de git es que es demasiado poco opinionado (unopinionated)
      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

    • ¿Has probado magit? Está basado en Emacs, así que tiene cierta curva de aprendizaje, pero es totalmente centrado en teclado y es difícil encontrar un flujo de trabajo que no soporte
    • Para hacer commits, la vista de Commit de Git Extensions era la mejor
      no tiene actualización automática, así que no choca con el CLI
      Documentación de Git Extensions Commit
    • A mí la que más me gusta es Sublime Merge. Es rápida, tiene una UI limpia, funciona bien en todas las plataformas y se compra con una sola licencia
    • Creo que Fork o Tower son mucho mejores que SourceTree. ¿Será que solo has usado herramientas gratuitas?
    • Casi no hay una UI que odie más en el mundo que SourceTree
      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

    • Yo también intenté usar jj varias veces, pero como su flujo de trabajo no se me hace natural, termino siendo más lento
      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

    • Yo también estoy de acuerdo con GH Desktop. Agrega funciones lentamente, pero con cuidado
      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
    • La falta de merge/resolución de conflictos y de grafo en GH Desktop parece ser precisamente la razón por la que muchos lo evitan
  • 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í

    • Se ve útil, pero como yo uso magit, ya hago commits y rebase con rapidez
      además, no me gustan mucho las herramientas basadas en rust porque traen demasiadas dependencias
    • Esto también está incluido en el repo de GNU/Debian
    • Lo usé unos meses, pero hubo casos en los que hizo mal un squash y el repo quedó medio enredado
      perdí confianza y al final dejé de usarlo. El hecho de que funcione demasiado como magia termina siendo incómodo
    • Para mí es más importante la claridad del historial. Reescribir el historial solo para que se vea bonito no me parece una buena idea
  • 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

    • Yo también llevo más de 15 años usando tig para hacer stage por hunk
  • 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

    • Pero creo que el problema es tener que usar VS Code en sí
  • La combinación de LazyVim + tmux cambió por completo mi forma de usar git
    configuré ctrl-g para que abra lazygit en un tmux floating pane desde el directorio actual
    así 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

    • Yo también descubrí hace poco tmux display-popup
      si agregas esto a ~/.tmux.conf
      bind-key C-g display-popup -E -d "#{pane_current_path}" -xC -yC -w 80% -h 75% "lazygit"
      
      puedes abrir el popup de lazygit con ctrl-b ctrl-g y cerrarlo con q
  • Yo hago operaciones de git con comandos de voz + AI. Si no, me parece que ctrl-r ya es una UI suficiente

  • Aunque nadie lo ha mencionado todavía, Gitu también es un cliente bastante decente