git ready

aprendiendo git de a un commit por vez
por Nick Quaranto, traducido por Matías Flores

tig, un front-end para Git basado en ncurses

publicado el 31 Jul 2009

Este artículo fue escrito por Nathan de Vries.

Nunca he sido un fan de gitk, pero cuando recién comenzaba a usar Git encontré una herramienta llamada tig. Está disponible en MacPorts y también en Ubuntu (desde Gutsy) vía apt-get install tig. Tig provee una simple interface visual para Git desde la línea de comandos.

La vista principal de tig - el log en el panel superior, las diferencias en el panel inferior

La forma más simple de utilizar esta herramienta es ejecutar tig desde un repositorio git. Este comando abrirá una vista del log, permitiéndonos navegar por el mismo con las teclas de cursor (también puedes usar j y k si estás acostumbrado a usar vim). Al presionar <enter> en cualquier commit podremos ver el diff correspondiente en el panel inferior. Cuando ambos paneles están visibles, con la barra espaciadora podemos navegar dentro del diff, y con las teclas arriba y abajo pasaremos de un commit a otro. Presionando q cerramos el panel inferior, y presionando q otra vez cerramos tig por completo.

Otro aspecto interesante de tig es la vista de árbol. Luego de arrancar tig, prueba presionar t cuando estés en la vista del log y verás una representación del repositorio en forma de árbol. Presiona <enter> para ingresar a un directorio o ver un archivo. Con <shift>-B sobre un archivo accedes a una vista más detallada del mismo.

Vista de árbol

Hasta ahora sólo hemos usado tig en la rama actual, pero tig también acepta un argumento opcional que puede ser una rama, un tag, etc. Personalmente encuentro muy útil esta opción para observar ramas remotas, utilizando por ejemplo algo como tig origin/rel-1.5.

Tener la posibilidad de visualizar una determinada rama al estar parado en otra también puede ser de gran ayuda si necesitas seleccionar un commit en particular de otra rama y aplicarlo en la rama actual. Por ejemplo, digamos que tengo una modificación en master que me gustaría aplicar en la rama origin/rel-1.5. Todo lo que tengo que hacer es moverme a la rama rel-1.5 con git checkout -b 1.5 origin/rel-1.5, abrir tig con tig master, navegar hasta el commit que deseo seleccionar, y presionar <shift>-C. Repetir estos pasos las veces que sea necesario.

Vista detallada

Aún no he tenido tiempo de investigar el resto de las opciones disponibles en tig, a excepción de tig show [rev] y tig blame [file], que utilizo diariamente. Si conoces algún truco sobre cómo sacarle más provecho a tig, ¡por favor compártelo en los comentarios!