TIG – Client para git no terminal

em Geral.

Há algum tempo uso git para controle de versões. Desde então, tenho usado o gitk para visualizar os branches e commits, pois uso Ubuntu e não achei opção melhor (por exemplo, testei o gitg e o gitkraken e não gostei).

Recentemente, estava cansado de usar o gitk e fiz uma nova pesquisa sobre clients de git e achei esse post falando sobre o TIG.

Ao instalar e testar, a primeira coisa que me chamou a atenção foi a velocidade que ele abre, é muito rápido – comparado ao gitk.

Outra coisa que me agradou muito foi a maneira com que fazemos a navegação, por exemplo, usando teclas j e k, sem precisar usar o mouse!

A parte difícil foi aprender os comandos, pois apesar de terem todos listados no help, não são tão fáceis de entender e de memorizar, por isso vou tentar listar aqui os principais que estou usando.

Começando pela instalação, que é muito fácil; basta um apt-get install tig no Ubuntu. No github do projeto tem instruções de como instalar em outras plataformas.

Ao abrir o TIG, é exibida a tela chamada de main view. Nela é possível ver o histórico de commits do projeto atual (da pasta em que foi aberto o tig).

Também é possível executar o TIG com a opção –all, que irá mostrar também outros branches que ainda não foram mergeados para o branch atual.

Para ter o layout acima, fiz algumas modificações no arquivo .tigrc, que deve ficar no diretório home, no meu caso em /home/fabio/.tigrc

Este é o conteúdo que estou usando:

set vertical-split = false

# main
color   main-tag                white    yellow     bold
color   main-local-tag          white    yellow     bold

color   main-tracked          white    cyan bold
color   main-head             white    cyan bold
color   main-remote           white    cyan bold

# external commands
bind main  !git reset %(commit)

Voltando aos detalhes sobre essa tela, é possível navegar entre os commits usando as teclas j e k ou as setas para cima e para baixo.

Uma coisa que demorei para aprender, é como voltar um passo pra trás. Normalmente estamos acostumados a apertar o ESC, mas no TIG, precisamos usar a tecla q.

Ainda nesta tela, é possível ver o conteúdo de um commit, para isso basta apertar a tecla enter.

Caso deseje ver a tela de help, basta apertar a tecla h.

Outra tela que uso bastante é a view-status. Para acessá-la, aperte a tecla s. Essa tela tem o comportamento semelhante a quando executamos o git status.

Nela conseguimos ver os arquivos que ainda não foram trackeados no git, os arquivos que foram modificados e os arquivos que já foram enviados para o stage (git add).

É possível navegar utilizando as teclas j e k novamente, ou as setas para cima e para baixo.

Agora vem a feature que mais gosto do TIG, que é poder fazer commits de partes de arquivo (git add -i). Para isso, posicione o cursor sobre algum arquivo que esteja modificado (Changed but not updated) e aperte enter. Dessa forma aparecerá o diff do que foi alterado.

Agora, utilizando as teclas j e k, é possível navegar sobre o diff. No help, tem a seção Scrolling que mostra outras maneiras de navegar, por exemplo, usando page up e page down ou insert e delete.

Para adicionar um trecho de código ao stage do git basta posicionar o cursor (linha verde) sobre uma linha que começa com @@ (as linhas roxas) e apertar a tecla u (no help, esse comando está em stage bindings -> View specific actions).

Também é possível adicionar só 1 linha de um trecho de código, basta posicionar o cursor sobre a linha e apertar a tecla 1.

Para retirar trechos ou linhas de código que já estão no stage é possível fazer o mesmo procedimento. A única diferença é que deve-se abrir o diff do arquivo que está em Changes to be committed.

Quando estiver pronto para comitar, basta fechar a tela de diff, apertando a tecla q, e apertar a tecla C. Isso abrirá seu editor de texto para que digite a mensagem de commit. Depois basta salvar e sair do arquivo que o commit é feito!

Outra tecla que uso em algumas situações é a R para fazer refresh da tela, pois é possível que tenha sido alterado algo fora do TIG e ele pode não perceber isso automaticamente.

A última coisa que comecei a usar é a parte de definição de comandos customizáveis. Por exemplo, gostaria de poder, na tela main view, posicionar o cursor sobre um commit e fazer um reset –hard para ele. Pude fazer isso com o external commands que está no meu .tigrc mostrado no começo da postagem.

Outra feature legal é poder ver o histórico de commits de um arquivo isolado. Para isso, basta executar no terminal tig NOME_DO_ARQUIVO.
Minha dica é experimentar o TIG, pois apesar de um pouco difícil para aprender as teclas, pude deixar o meu processo de commits mais ágil e confortável (não era legal ficar vendo a tela feia do gitk!).