Guia completo do commit semântico

Em qualquer projeto é essencial ter um histórico claro e compreensível das mudanças que acontecem ao longo do tempo. Uma das ferramentas que tornam isso possível é o sistema de controle de versão GIT, onde cada alteração é registrada através de um “commit”. O commit semântico é uma convenção que busca melhorar a clareza e a eficácia desses registros, deixar de forma objetiva cada mensagem registrada em cada commit feito dentro do projeto.

Vai facilitar não apenas a leitura e compreensão, mas também fornece informações úteis para ferramentas automatizadas que podem processar este formato padronizado.

Problemas com commits não-semânticos

Dificuldade em entender mudanças: Mensagens de commit vagas ou ambíguas como “Corrigido bug” ou “Atualizações” não fornecem contexto suficiente. Isso pode tornar difícil para desenvolvedores entender o racional ou impacto de uma mudança, especialmente em projetos maiores.

Falta de Padrão: Sem uma convenção definida, cada desenvolvedor tem sua própria maneira de escrever commits, levando a um histórico inconsistente e por vezes confuso.

Atraso na Identificação de Bugs: Sem entender claramente o propósito de cada commit, pode ser mais desafiador rastrear a origem de um bug ou comportamento inesperado no código.

Estrutura do commit semântico

O formato geral de um commit semântico é:

<tipo>(<escopo>): <mensagem>

  • Tipo: Define a natureza da alteração, e.g., `feat`, `fix`, `docs`.
  • Escopo: É opcional e contextualiza onde a mudança ocorre, e.g., `auth`, `backend`.
  • Mensagem: Descreve a mudança de maneira concisa.

Tipos de Commit Semântico

  • feat: Esta tag é usada quando uma nova funcionalidade ou recurso é adicionado ao projeto. Por exemplo: feat(search): implement search functionality
  • fix: Usado quando um bug é corrigido. Por exemplo: fix(button): resolve issue where button doesn’t trigger
  • docs: Alterações ou adições à documentação. Por exemplo: docs(readme): update installation instructions
  • style: Refere-se a correções de estilo como formatação, falta de ponto e vírgula, etc., que não afetam a lógica do código. Exemplo: style(navbar): adjust padding for better alignment
  • refactor: Mudanças no código que não introduzem novas funcionalidades nem corrigem bugs. Pode ser uma reestruturação ou uma otimização. Exemplo: refactor(login): use hooks instead of class components
  • perf: Melhorias de performance no código. Exemplo: perf(images): reduce load time by compressing
  • test: Quando se adicionam testes faltantes ou se corrigem testes existentes. Exemplo: test(cart): add unit test for item addition
  • chore: Mudanças regulares ou de manutenção, como atualizações de dependências. Exemplo: chore(deps): update lodash to 4.17.20

** O escopo nem sempre é algo obrigatório porem pelo menos deve seguiro padrão com tipo: menasgem do commit

Exemplo de um commit:

  • git commit -mfeat: implementing login button in header

Ou se gosta de seguir em português também sem problema:

  • git commit -mfeat: implementando botão de login no header”

Mensagem de Commit

A mensagem de commit deve ser clara concisa e descrever efetivamente o que foi feito.

  • Concisão é o segredo: Tente manter a mensagem curta, mas informativa. O ideal é que ela não exceda 40/50 caracteres.
  • Evite linguagem redundante: Frases como “Adicionei…” ou “Eu mudei…” são desnecessárias. Em vez disso, vá direto ao ponto: fix: resolve login com email.
  • Use o tempo presente: Isso mantém a consistência e a leitura fácil. Em vez de “adicionado” ou “corrigido”, use “adiciona” ou “corrige”.

E se você está começando agora a aprender Git & Github 100% gratuito passo a passo para dominar o Git & Github: Acessasr curso