Apelidos no Git
Tags: git, productivity, ptbr
Published: 2019-11-20 12:24:15

> Este post foi originalmente publicado em meu [site pessoal](https://joaoretamero.com.br/git-alias)

Já executou aquele comando longo no Git várias e várias vezes? Isso pode ser um pouco trabalhoso, mas o Git te fornece uma opção para agilizar o uso no dia-a-dia, são os `git alias`.

## Por que usar apelidos

Talvez você goste de escrever aquele comando cheio de argumentos repetidas vezes, ou se for como eu, prefere algo mais simples.

Os apelidos trazem simplicidade e produtividade pois nos permitem atribuir um comando longo a um apelido, que é mais simples e memorizável.

## Configurando apelidos

Os apelidos ficam nos arquivos de configuração do Git, ou seja, podem ser armazenados nas configurações locais (repositório), globals (do usuário) ou do sistema (da máquina, independente de usuário).

Por estarem localizados nos arquivos de configuração do Git, usamos o comando `git config` para criá-los. Neste texto, estarei usando as configurações globais com o argumento `--global`.

Para definir um apelido, usamos a seguinte sintaxe: `git config --global alias.<nome> '<comando>'`.

Supondo que você usa o comando `git log -5 --oneline` frequentemente, você pode criar um apelido da maneira abaixo:

```bash
git config --global alias.log5 'log -5 --oneline'
```

Agora você pode usar o comando `git log5` que terá o mesmo efeito que o comando `git log -5 --oneline`.

## Apelidos são substituições

Se você notar, não é necessário escrever `git log -5 --oneline` ao configurar o apelido, omitindo o `git` do comando. A configuração do apelido é desta maneira pois no fundo, apelidos são apenas uma substituição. O Git irá substituir o nome do apelido pelo conteúdo.

Pensando que são apenas uma substituição, você pode evitar a criação de inúmeros apelidos e complementar os apelidos existentes quando necessário.

Imagine que acabou de criar o apelido `log5` e em determinado momento precisa visualizar o grafo, basta adicionar o argumento `--graph` ao final do comando.

```bash
git log5 --graph
```

Que será equivalente ao comando abaixo.

```bash
git log -5 --oneline --graph
```

Assim você pode encurtar alguns comandos longos e também complementá-los sempre que precisar.

## Indo além das substituições

Os apelidos podem ser muito mais úteis do que meras substituições. Isto porque podemos configurar apelidos com comandos shell, o que abre uma enorme quantidade de possibilidades, como a execução de um script complexo.

Basta iniciar os comandos dos apelidos com uma exclamação para que o Git não faça a substituição e execute o comando por completo.

> Procure configurar seus comandos com aspas simples, assim seu terminal não interpretará o comando de forma indevida

Um apelido que eu costumo configurar é o `fetchb` que faz um `git fetch` apenas do branch atual. Mas para descobrir qual branch estamos no momento, usamos o comando `git rev-parse --abbrev-ref HEAD`.

Então o apelido `fetchb` é a combinação de dois comandos: um `git fetch` e um `git rev-parse`. Esta é uma ótima situação para usar um apelido com o shell.

> Note que por ser um comando shell, agora precisamos adicionar `git` no início dos comandos.

```bash
git config --global alias.fetchb '!git fetch origin $(git rev-parse --abbrev-ref HEAD)'
```

Podemos até invocar arquivos de script como no exemplo abaixo.

```bash
git config --global alias.pull-request '!~/scripts/pr.sh'
```

## Conclusão

Os apelidos no Git podem trazer muita produtividade, não só por substituir comandos longos (e talvez complexos) por nomes pequenos e memorizáveis, mas também por executar comandos shell, que podem ser muito úteis no fluxo desenvolvimento.

Até mais.