Os Padrões de commits é uma especificação projetada para padronizar as mensagens de commit em repositórios Git. Seu principal objetivo é criar um histórico de commits mais legível e descritivo, facilitando a automação de processos como a geração de changelogs e versionamento semântico.

De acordo com a documentação do Conventional Commits, commits semânticos são uma convenção simples para ser utilizada nas mensagens de commit. Essa convenção define um conjunto de regras para criar um histórico de commit explícito, facilitando a criação de ferramentas automatizadas. Esses commits auxiliam você e sua equipe a entenderem de forma facilitada quais alterações foram realizadas no trecho de código que foi commitado.
O Conventional Commits define uma estrutura específica para mensagens de commit, seguindo o formato:
<tipo>[escopo opcional]: <descrição>
[corpo opcional]
[rodapé(s) opcional(is)]
Cada commit contém os seguintes elementos:
fix: usado para correções de bugs, associado ao nível PATCH do versionamento semântico.
feat: utilizado ao introduzir novas funcionalidades, relacionado ao MINOR do versionamento semântico.
docs: Commits do tipo docs indicam mudanças na documentação, como o arquivo README, sem alteração no código-fonte.
test: Commits do tipo test indicam modificações em testes, como a criação, alteração ou exclusão de testes unitários, sem mudança de código.
build: Commits do tipo build indicam modificações em arquivos de build e dependências.
perf: Commits do tipo perf indicam alterações de código relacionadas à performance.
style: Commits do tipo style indicam mudanças em formatação, como espaçamentos, ponto e vírgula e lint, sem alterar o código.
refactor: Commits do tipo refactor indicam refatorações que não alteram a funcionalidade do código, apenas sua estrutura interna.
chore: Commits do tipo chore indicam mudanças de manutenção, como a adição de pacotes no gitignore, sem alterar o código.
ci: Commits do tipo ci indicam mudanças em configurações de integração contínua (CI/CD).
raw: Commits do tipo raw indicam mudanças relacionadas a arquivos de configuração e dados brutos.
cleanup: Commits do tipo cleanup indicam a remoção de código comentado ou desnecessário para melhorar a legibilidade.
remove: Commits do tipo remove indicam a exclusão de arquivos, diretórios ou funcionalidades obsoletas.
Exemplos de algumas possíveis mensagens.
feat(lang): adiciona suporte a português brasileiro.
docs(readme): atualiza informações de instalação no README.
test(unit): adiciona testes unitários para o componente de login.
build(deps): atualiza dependências do projeto.
perf(algoritmo): otimiza a performance do algoritmo de ordenação.
O Conventional Commits também recomenda o uso de emojis para identificar visualmente o tipo de commit:
feat: ✨
:sparkles:
– Novo recurso.fix: 🐛
:bug:
– Correção de bug.docs: 📚
:books:
– Atualização de documentação.style: 💄
:lipstick:
– Estilização e formatação.refactor: ♻️
:recycle:
– Refatoração de código.test: 🧪
:test_tube:
– Adição ou modificação de testes.perf: ⚡
:zap:
– Melhorias de performance.chore: 🔧
:wrench:
– Tarefas e manutenção.remove: 🗑️
:wastebasket:
– Remoção de arquivos ou recursos.cleanup: 🧹
:broom:
– Limpeza de código.
Ao adotar os Padrões de commits traz diversos benefícios para projetos de software:
Automatização de Changelogs: Facilita a geração automática de changelogs baseados nas mensagens de commit.
Versionamento Semântico: Permite determinar automaticamente se a versão deve ser MAJOR, MINOR ou PATCH.
Comunicação Clara: Melhora a compreensão das mudanças para todos os membros da equipe e colaboradores externos.
Facilita Contribuições: Proporciona um histórico de commits mais organizado e descritivo.
Adotar o Conventional Commits em seus projetos melhora a clareza e a automação no controle de versão. Ele promove consistência nas mensagens de commit, facilitando a manutenção e o entendimento das mudanças no código ao longo do tempo. Considere implementar essa prática em seu fluxo de trabalho para obter benefícios a longo prazo.
Referencias:
https://github.com/iuricode/padroes-de-commits?tab=readme-ov-file
https://www.conventionalcommits.org/pt-br/v1.0.0/#especifica%c3%a7%c3%a3o