Regras de conventional commits em português (PT-BR) com granularidade por camada. Formato, tipos, escopo, atomicidade e exemplos.
<type>[optional scope]: <descrição>
[optional body]
[optional footer(s)]
BREAKING CHANGE: <descrição> para breaking changesFixes #123 para fechar issuesRefs #456 para issues relacionadasReviewed-by: Name para revisoresBREAKING CHANGE: no footer, OU! após type/scope: feat(api)!: remove endpoints deprecadosMesmo dentro da MESMA feature, dividir commits por camada/responsabilidade.
Ordem de commits (de baixo para cima da stack):
Exemplo — adicionando novo tipo de relacionamento:
Em vez de UM commit grande, criar:
feat(constants): adiciona novos tipos de relacionamento nas opções
feat(constants): adiciona documentos para novos relacionamentos
feat(validation): adiciona validações para documentos de novos relacionamentos
feat(hooks): ajusta hooks para suportar novos relacionamentos
feat(components): implementa UI para novos tipos de relacionamento
style(ui): ajusta estilos de campos desabilitados
Por que isso importa:
Regra de ouro: Se o commit pode ser descrito com "E" (ex: "adiciona opções E validações E componentes"), são commits SEPARADOS.
Feature simples:
feat(auth): adiciona suporte a login OAuth2
Bug com scope:
fix(parser): corrige tratamento de valores nulos no JSON
Breaking change:
feat(api)!: remove endpoints deprecados
BREAKING CHANGE: endpoint /v1/users foi removido, use /v2/users
Com body e footer:
refactor(database): migra de MongoDB para PostgreSQL
Atualiza queries ORM e lógica de conexão para usar PostgreSQL.
Melhora performance de queries e adiciona suporte a transações.
Refs #234
Mais exemplos: