Este post foi originalmente publicado em meu site pessoal
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:
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.
git log5 --graph
Que será equivalente ao comando abaixo.
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.
git config --global alias.fetchb '!git fetch origin $(git rev-parse --abbrev-ref HEAD)'
Podemos até invocar arquivos de script como no exemplo abaixo.
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.
Top comments (4)
Muito bom João, embora seja algo simples, é um recurso do Git com grande poder de aumentar a produtividade.
É mesmo Paulo, o exemplo do
pr.sh
é um exemplo da vida real, pois onde trabalho, estamos automatizando o fluxo de pull request com um script que é chamado através do alias.Opa, acho que seria interessante falar desse case de automatizar o fluxo de PR, quais foram os problemas que os levaram a procurar uma solução, quais soluções analisaram além dessa e como está agora.
Fiquei bem interessado 😃
Ótima idéia! Como estamos experimentando, irei aguardar mais algumas semanas para aprendermos mais nessa jornada, quando tiver mais conteúdo eu compartilho ;)