Aliases do Git: atalhos para comandos frequentes

1. Introdução aos Aliases no Git

Aliases no Git são atalhos personalizados que permitem substituir comandos longos e complexos por versões abreviadas e fáceis de lembrar. Em vez de digitar git status toda vez, você pode configurar git st e economizar segundos preciosos a cada iteração. Com o tempo, essa economia se acumula em horas de produtividade.

A principal diferença entre aliases locais e globais está no escopo:

  • Aliases locais: configurados com --local, ficam restritos ao repositório atual (arquivo .git/config).
  • Aliases globais: configurados com --global, ficam disponíveis para todos os repositórios do seu usuário (arquivo ~/.gitconfig).

A sintaxe básica para criar um alias é:

git config --global alias.<nome> <comando>

Por exemplo:

git config --global alias.s status

Agora, git s executa git status. Simples e poderoso.

2. Aliases Essenciais para o Dia a Dia

Estes aliases formam a base de qualquer fluxo de trabalho produtivo com Git:

git config --global alias.st status
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.co checkout
git config --global alias.df diff

Com esses atalhos, comandos comuns ficam muito mais rápidos:

# Em vez de: git status
git st

# Em vez de: git commit -m "mensagem"
git ci -m "mensagem"

# Em vez de: git branch
git br

Para um log visualmente rico, configure o alias lg:

git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"

Exemplo de uso:

git lg

O resultado mostra um gráfico de commits com cores, hash abreviado, referências, mensagem, data relativa e autor.

3. Aliases para Navegação e Histórico

Gerenciar o staging area e navegar pelo histórico fica mais intuitivo com estes aliases:

git config --global alias.unstage "reset HEAD --"
git config --global alias.last "log -1 HEAD --stat"
git config --global alias.who "shortlog -s --"
  • git unstage arquivo.txt remove o arquivo da área de staging sem perder as alterações.
  • git last mostra o último commit com estatísticas de arquivos modificados.
  • git who exibe uma lista de autores e quantos commits cada um fez.

Exemplo prático:

# Desfazer staging de um arquivo
git unstage index.html

# Ver o último commit em detalhes
git last

# Ver contribuições por autor
git who

4. Aliases para Commits e Revisão

Corrigir e ajustar commits se torna mais seguro com estes atalhos:

git config --global alias.amend "commit --amend --no-edit"
git config --global alias.undo "reset --soft HEAD~1"
git config --global alias.fixup "commit --fixup"
  • git amend altera o último commit adicionando mudanças atuais, sem precisar editar a mensagem.
  • git undo reverte o último commit, mas mantém as alterações na área de staging (modo soft).
  • git fixup cria um commit de correção para uso com git rebase -i --autosquash.

Exemplo:

# Adicionar esquecimento ao último commit
git add arquivo-esquecido.txt
git amend

# Desfazer commit mantendo mudanças
git undo

# Criar commit de correção para o hash abc123
git fixup abc123

5. Aliases para Branches e Merge

Manter branches organizadas é essencial. Estes aliases automatizam a limpeza:

git config --global alias.merged "branch --merged"
git config --global alias.cleanup "branch --merged | grep -v '\*\|master\|main' | xargs -n 1 git branch -d"
git config --global alias.nb "checkout -b"
  • git merged lista todas as branches já mescladas na branch atual.
  • git cleanup remove todas as branches locais mescladas (exceto master/main e a atual).
  • git nb nova-branch cria e já muda para a nova branch.

Exemplo prático:

# Ver branches mescladas
git merged

# Limpar branches obsoletas
git cleanup

# Criar e ir para uma nova branch
git nb feature/nova-funcionalidade

6. Aliases para Stash e Trabalho Temporário

Salvar e recuperar trabalhos em andamento fica mais descritivo:

git config --global alias.stsh "stash push -m"
git config --global alias.popl "stash pop"
git config --global alias.stlist "stash list"
  • git stsh "mensagem descritiva" salva alterações com uma mensagem que explica o contexto.
  • git popl aplica e remove o stash mais recente da pilha.
  • git stlist exibe todos os stashes com detalhes de data, branch e mensagem.

Exemplo:

# Salvar trabalho em andamento
git stsh "WIP: ajustes no formulário de login"

# Recuperar o stash mais recente
git popl

# Listar todos os stashes
git stlist

7. Aliases Avançados e Customizações

Para cenários mais complexos, aliases podem incorporar funções shell:

git config --global alias.force-push "!git push --force-with-lease"

O ! no início indica que o comando será executado pelo shell, permitindo lógica condicional:

git config --global alias.fpush '!f() { echo "ATENÇÃO: Push forçado em $1"; git push --force-with-lease "$@"; }; f'

Aliases com parâmetros também são possíveis usando funções:

git config --global alias.find '!f() { git log --all --grep="$1"; }; f'
git config --global alias.diff-word '!f() { git diff --word-diff "$@"; }; f'

Exemplo de uso:

# Buscar commits que contenham "bugfix" na mensagem
git find bugfix

# Ver diff com destaque palavra por palavra
git diff-word HEAD~1 HEAD

Para compartilhar aliases entre equipes ou máquinas, você pode manter um arquivo .gitconfig separado e incluí-lo no seu arquivo principal:

# No ~/.gitconfig
[include]
    path = ~/.git-aliases

Depois, basta distribuir o arquivo .git-aliases com todos os seus aliases definidos no formato:

[alias]
    st = status
    ci = commit
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'

Conclusão

Aliases transformam a experiência com Git, reduzindo digitação repetitiva e aumentando a produtividade. Comece com os essenciais, depois expanda conforme sua rotina exigir. Lembre-se de que aliases são pessoais e devem refletir seu fluxo de trabalho. Experimente, ajuste e compartilhe os que funcionarem melhor para você.

Referências