Skip to content

Conventional Commits

Padrão de mensagens de commit adotado pela equipe.

Estrutura Básica

<tipo>[escopo opcional]: <descrição>

[corpo opcional]

[rodapé(s) opcional(is)]

Tipos

TipoQuando usar
featNova funcionalidade
fixCorreção de bug
docsAlteração em documentação
styleFormatação, ponto e vírgula, etc (sem mudar lógica)
refactorRefatoração de código (sem adicionar feature ou corrigir bug)
perfMelhoria de performance
testAdição ou correção de testes
choreBuild, CI/CD, dependências, configs
revertReverte um commit anterior

Escopo

O escopo é opcional, mas incentivado quando aplicável.

Quando usar:

  • ✅ Mudança afeta um módulo/área específica
  • ❌ Mudança afeta múltiplos módulos
bash
# Com escopo (recomendado quando aplicável)
feat(auth): adiciona login com Google
fix(api): corrige validação de CPF

# Sem escopo (ok para mudanças amplas)
refactor: reorganiza estrutura de pastas
docs: atualiza README

Breaking Changes

Mudanças que quebram compatibilidade com versões anteriores.

Formas válidas:

bash
# Opção 1: ! após o tipo/escopo
feat!: muda estrutura da API de usuários
feat(api)!: remove endpoint /v1/users

# Opção 2: BREAKING CHANGE no rodapé (recomendado)
feat(api): adiciona autenticação obrigatória

BREAKING CHANGE: endpoints agora exigem token JWT

Recomendação: Use BREAKING CHANGE: no rodapé quando precisar explicar o impacto.

Exemplos Práticos

bash
# Feature nova
feat(crud): adiciona CRUD de equipamentos

# Correção de bug
fix(notificacao): corrige envio de email duplicado

# Documentação
docs(api): atualiza endpoints de usuário

# Refatoração
refactor(database): otimiza queries de relatório

# Configuração/Build
chore(docker): atualiza imagem do Node para v20

# Breaking change com explicação
feat(api): remove suporte a autenticação básica

BREAKING CHANGE: autenticação básica foi removida.
Usar apenas JWT a partir de agora.

Regras

  • Sempre em minúsculas: feat e não Feat ou FEAT
  • Descrição clara e objetiva
  • Primeira linha com até 72 caracteres
  • Verbo no imperativo: "adiciona" não "adicionado" ou "adicionando"

Validação

O CI/CD valida automaticamente se o commit segue o padrão.

Commits que não seguem o padrão bloqueiam o merge.

INFO

Esta validação está sendo implementada gradualmente. Verifique se seu projeto já possui essa configuração.

Aprofundamento

Para casos avançados, múltiplos autores, e detalhes completos, veja o Guia Completo de Commits.


Referência oficial: Conventional Commits

Documentação mantida pelo Time de Desenvolvimento 💪