Pular para o conteúdo principal

A importância do commit semântico

Por Kaio Lima

Atualizado em 18/06/2024

✏️ Introdução

O commit semântico envolve a criação de mensagens de commit significativas e descritivas, seguindo um padrão bem definido. Apresento algumas razões pelas quais o commit semântico é importante:

  • Comunicação clara
  • Histórico Legível
  • Facilidade no uso de ferramentas de automação
  • Organização pessoal e trabalho em grupo

💡 Tipos mais usados e estrutura

**feat** - Commits do tipo feat indicam que seu trecho de código está incluindo um novo recurso (se relaciona com o MINOR do versionamento semântico).

**fix** - Commits do tipo fix indicam que seu trecho de código commitado está solucionando um problema (bug fix), (se relaciona com o PATCH do versionamento semântico).

**docs** - Commits do tipo docs indicam que houveram mudanças na documentação, como por exemplo no Readme do seu repositório. (Não inclui alterações em código).

**test** - Commits do tipo test são utilizados quando são realizadas alterações em testes, seja criando, alterando ou excluindo testes unitários. (Não inclui alterações em código)

**build** - Commits do tipo build são utilizados quando são realizadas modificações em arquivos de build e dependências.

**perf** - Commits do tipo perf servem para identificar quaisquer alterações de código que estejam relacionadas a performance.

**style** - Commits do tipo style indicam que houveram alterações referentes a formatação de código, semicolons, trailing spaces, lint... (Não inclui alterações em código).

**refactor** - Commits do tipo refactor referem-se a mudanças devido a refatorações que não alterem sua funcionalidade, como por exemplo, uma alteração no formato como é processada determinada parte da tela, mas que manteve a mesma funcionalidade, ou melhorias de performance devido a um code review.

**chore** - Commits do tipo chore indicam atualizações de tarefas de build, configurações de administrador, pacotes... como por exemplo adicionar um pacote no gitignore. (Não inclui alterações em código)

**cleanup** - Commits do tipo cleanup são utilizados para remover código comentado, trechos desnecessários ou qualquer outra forma de limpeza do código-fonte, visando aprimorar sua legibilidade e manutenção.

**remove** - Commits do tipo remove indicam a exclusão de arquivos, diretórios ou funcionalidades obsoletas ou não utilizadas, reduzindo o tamanho e a complexidade do projeto e mantendo-o mais organizado.

Fonte: Padrões de commits

🖥️ Commitizen

O Commitizen pressupõe que sua equipe utilize um padrão específico para escrever mensagens de commit e, com base nesse padrão, ele pode atualizar a versão do seu projeto, criar o changelog e atualizar arquivos.

Por padrão, o Commitizen utiliza commits convencionais, mas você pode criar seu próprio conjunto de regras e publicá-las.

Usar um conjunto padronizado de regras para escrever commits torna-os mais fáceis de ler e reforça a escrita de commits descritivos.

  • Requisitos: Python e Git

Instalação do Commitizen no seu sistema:

bash
pip install --user -U Commitizen

Adicionando o Commitizen no seu projeto:

bash
pip install -U commitizen

Uso na prática:

  • Faça um git add dos arquivos que deseja commitar
bash
git add .
  • Faça um cz commit no terminal
bash
cz commit

Algumas opções default surgirão:

Imagem Kaio 1

A partir delas você começa a montar seu commit semântico de forma simples e rápida

Imagem Kaio 2

Após criar o seu commit, basta fazer o git push:

bash
git push

Fonte: Commitizen

Adendo - Existe uma extensão no VS Code chamada "Conventional Commits" que realiza o mesmo trabalho de forma "mais simples" sem a necessidade de usar o terminal. Ponto positivo: é mais fácil de usar, mas não oferece a mesma integração que o Commitizen possui com plataformas como o Jira, que ajudam a automatizar o fluxo de trabalho em técnicas como Kanban, por exemplo.

🎓 Conclusão

Em resumo, o commit semântico melhora a colaboração, a rastreabilidade e a qualidade do código, tornando-o uma prática valiosa para qualquer desenvolvedor. Espero que esse material ajude de alguma forma!