Passo a passo: Como configurar hooks no Git para automatizar tarefas

Hooks no Git permitem automatizar tarefas como validação de código, execução de testes e integração contínua durante operações do Git.

Como configurar hooks no Git para automatizar tarefas?

Os hooks no Git são scripts que permitem executar ações automáticas antes ou depois de operações como commits, merges e pushes. Eles são úteis para validar código, rodar testes ou aplicar formatações automaticamente.

1. Onde ficam os hooks no Git?

Os hooks do Git ficam armazenados na pasta .git/hooks dentro do repositório. Para visualizar os hooks padrão, use:

ls .git/hooks

Você verá arquivos como pre-commit.sample, pre-push.sample e outros.

2. Criando um hook personalizado

Para criar um hook que impede commits com mensagens vazias, edite o arquivo .git/hooks/commit-msg:

nano .git/hooks/commit-msg

E adicione o seguinte código:

#!/bin/sh

if [ -z "$(cat $1)" ]; then
  echo "Erro: A mensagem de commit não pode ser vazia!"
  exit 1
fi

Agora, torne o script executável:

chmod +x .git/hooks/commit-msg

Sempre que tentar fazer um commit sem mensagem, ele será bloqueado.

3. Criando um hook para rodar testes antes do push

Se quiser rodar testes antes de enviar código para o repositório, edite o arquivo .git/hooks/pre-push:

nano .git/hooks/pre-push

E adicione:

#!/bin/sh

echo "Rodando testes antes do push..."
if ! ./run-tests.sh; then
  echo "Erro: Os testes falharam! Push cancelado."
  exit 1
fi

Isso impede o push caso os testes falhem.

Os hooks no Git são essenciais para automatizar tarefas e melhorar a qualidade do código. Em times grandes, garantir que todos os commits seguem um padrão é fundamental para evitar problemas no desenvolvimento.

Um dos usos mais comuns dos hooks é rodar linters antes dos commits, garantindo que o código siga as boas práticas da equipe. Outro exemplo é impedir pushes para a branch principal sem revisão, evitando que código com erros vá para produção acidentalmente.

Algumas aplicações:

  • Executar testes antes de enviar código para o repositório
  • Impedir commits com mensagens vazias ou mal formatadas
  • Rodar linters automaticamente antes de commits
  • Evitar push de código quebrado para a branch principal
  • Automatizar deploys e outras integrações contínuas

Dicas para quem está começando

  • Antes de modificar um hook, faça um backup do arquivo original.
  • Os hooks são scripts, então certifique-se de torná-los executáveis com 'chmod +x'.
  • Para compartilhar hooks com a equipe, utilize ferramentas como Husky (para projetos Node.js).
  • Se um hook estiver bloqueando commits ou pushes de forma errada, você pode desativá-lo temporariamente renomeando o arquivo.
  • Teste os hooks localmente antes de aplicá-los em um projeto compartilhado.

Contribuições de Tatiane Freitas

Compartilhe este tutorial: Como configurar hooks no Git para automatizar tarefas

Compartilhe este tutorial

Continue aprendendo:

Como usar git bisect para encontrar um commit com bug

Git bisect é uma ferramenta que usa busca binária para encontrar rapidamente o commit que introduziu um bug em um repositório.

Tutorial anterior

Como assinar commits com GPG no Git

A assinatura GPG no Git permite validar a identidade do autor de um commit, garantindo a autenticidade das mudanças no repositório.

Próximo tutorial