Git Tips N Tricks

July 1, 2015

Por um tempo eu usei paralelamente três VCS, o Git, o Mercurial e o SVN, o último basicamente por causa do trabalho. De um tempo pra cá tenho tentado focar mais em uma única coisa e direcionar meus estudos, por assim dizer.

E na questão de VCS a escolha foi o Git. O Git surgiu para substituir o VCS usado anteriormente no desenvolvimento do Linux, que era proprietário.

Tanto o Git quanto o Mercurial, eu usava principalmente em meus projetos particulares, dessa maneira eu acabei não tendo a necessidade de usar alguns recursos, mas como resolvi focar em somente uma ferramenta, achei que seria uma boa dar uma lida melhor sobre o Git.

$ git --version
git version 2.0.1

Um livro bastante citado pela comunidade é o Pro Git, você pode ler uma versão online dele aqui. E foi lendo o livro que conheci um recurso interessante, auto-completion.

Auto-completion script

Ele é um script que você pode habilitar para completar alguns comandos do Git, o script vive aqui. Eu copiei o arquivo como ‘.git-completion.bash’ na minha home.

Depois, basta editar o .bashrc e adicionar o source para esse script aí.

$ vim .bashrc
source ~/.git-completion.bash

A diferença é que antes, se você fizesse isso, nada aconteceria.

$ git co<tab><tab><tab><tab><tab><tab>

Com a ajuda desse script porém, se você digitar um comando parcialmente e apertar tab, será exibida uma lista de sugestões que podem ser o comando que você está esperando, ou se só existir uma possibilidade o comando será completado pra você.

$ git co<tab><tab>
column commit config
$ git com<tab>
$ git commit

Mas auto-completion não se limita a comandos não! Sabe quando você esquece qual opção usar em determinado comando? Então.

$ git add --<tab><tab>
--dry-run --intent-to-add --patch --update --ignore-errors --interactive
--refresh

Git aliases

Outro recurso bem interessante que eu usei bastante quando trabalhei em uma empresa que utilizada Git é o esquema de alias, pode-se pensar nele como uma maneira de criar atalhos para alguns comandos no Git.

Algumas vezes, principalmente quando eu queria mostrar ou perguntar alguma coisa pra alguém, eu tinha um comando para visualizar o log bem grande, gigante. Era bem chato digitar tudo aquilo e as vezes eu acabava errando, para resolver isso eu criei um alias.

Vamos supor que você queira criar um atalho para o seguinte comando:

$ git log --pretty=format:"%h - %an, %ar : %s"

Você vai usar o ‘git config’ para a criação:

$ git config --global alias.lo 'log --pretty=format:"%h - %an, %ar : %s"'

A partir de agora, você pode usar apenas ‘git lo’ no lugar de ficar sempre entrando com a formatação do log.

$ git lo

Por último, uma sugestão bacana do livro é que você crie um alias para remover um arquivo da staging area.

$ git config --global alias.unstage 'reset HEAD --'

Agora, se adicionou algum arquivo sem querer no index e deseja remover, para fazer o commit separado por exemplo, basta fazer assim:

$ git unstage arquivo.txt

Você também pode criar alias para executar comandos externos do Git, basta dar uma olhada no livro.

Lembro que o Bash também oferece um recurso parecido, mas isso é assunto pra outra hora.