Padrão de commit

Seja trabalhando sozinho ou em um time com vários devs ora ou outra precisamos consultar commits anteriores. No começo eu acaba escrevendo meus commits como: "Correção”, “Melhorias” e  “Update”, pois não sabia que existia uma boa prática pra isso. Assim, sempre que precisava buscar alguma alteração antiga era muito difícil e confuso... Até que descobrir o Conventional Commits.

1. O que é Conventional Commits?

Conventional commits trata-se de um padrão de escrita de mensagens de commit para facilitar a comunicação entre desenvolvedores e ajudar a manter o histórico do código organizado.

O padrão é bem simples:
(escopo):

2. Tipos

Os tipos é obrigatório e são sobre o que se trata o commit.
Só pode ser usado um por commit, caso esteja em dúvida sobre qual usar, provavelmente trata-se de uma grande mudança e é possível separar o código em dois ou mais commits.

Os tipos mais comuns são:

  • feat: novo recurso
  • fix: solucionando um problema
  • docs: mudanças na documentação
  • test: alterações em testes
  • build: alterações em arquivos de build e dependências
  • perf: alterações relacionadas à performance
  • style: formatação de código e lint
  • refactor: refatoração de código que não altera a funcionalidade
  • chore: atualizações de tarefas de build, configurações de administrador e pacotes
  • cleanup: limpeza no código, legibilidade
  • remove: exclusão de código/arquivos que não são mais utilizados
  • revert: rollback para commit específico

É possível adicionar um ! opcional na para chamar atenção a quebra de compatibilidade.
Exemplo:

feat!: descontinuar uso do componente card

3. Escopo

Este é opcional e trata-se sobre qual é o escopo específico abordado, como um componente, fluxo ou configuração.

4. Descrição

Para escrever a descrição podemos pensar: "se eu aplicar esse commit ele vai..." ou "O que essa alteração faz?" e completar a frase.

  • Não é necessário colocar o porque do commit (motivação), mas sim o que de fato ele faz.
  • É obrigatório escrever em inglês? Não, isso deve ser alinhado com outros devs que irão trabalhar no mesmo repositório, mas é sempre uma boa prática utilizar inglês para documentações.

5. Emojis

É possível utilizar um emoji no início da mensagem de commit representando sobre o que ele se trata.
É opicional e tem objetivo apenas visual para organização.

Os principais tipos são:

Tipo de commit Emojis
Commit inicial 🎉 :tada:
Tag de versão 🔖 :bookmark:
Novo recurso ✨ :sparkles:
Lista de ideias (tasks) 🔜 :soon:
Bugfix 🐛 :bug:
Documentação 📚 :books:
Testes 🧪 :test_tube:
Acessibilidade ♿ :wheelchair:
Adicionando um teste ✅ :white_check_mark:
Teste de aprovação ✔️ :heavy_check_mark:
Acessibilidade ♿ :wheelchair:
Texto 📝 :pencil:
Package.json em JS 📦 :package:
Em progresso 🚧 :construction:
Arquivos de configuração 🔧 :wrench:
Removendo uma dependência ➖ :heavy_minus_sign:
Adicionando uma dependência ➕ :heavy_plus_sign:
Revertendo mudanças 💥 :boom:
Alterações de revisão de código 👌 :ok_hand:
Refatoração ♻️ :recycle:
Mover/Renomear 🚚 :truck:
Acessibilidade  ♿ ♿
Deploy 🚀 :rocket:
Segurança 🔒️ :lock:

6. Exemplos:💻

Comando Git Resultado no GitHub
git commit -m ":tada: Commit inicial" 🎉 Commit inicial
git commit -m ":books: docs: Atualização do README" 📚 docs: Atualização do README
git commit -m ":bug: fix(modal): Loop infinito na linha 50" 🐛 fix: Loop infinito na linha 50
git commit -m ":sparkles: feat: Página de login" ✨ feat: Página de login
git commit -m ":zap: perf: Melhoria no tempo de resposta" ⚡ perf: Melhoria no tempo de resposta
git commit -m ":boom: fix: Revertendo mudanças ineficientes" 💥 fix: Revertendo mudanças ineficientes
git commit -m ":lipstick: feat!: Estilização CSS do formulário" 💄 feat: Estilização CSS do formulário
git commit -m ":test_tube: test: Criando novo teste" 🧪 test: Criando novo teste
git commit -m ":bulb: docs: Comentários sobre a função LoremIpsum( )" 💡 docs: Comentários sobre a função LoremIpsum( )
git commit -m ":broom: cleanup: Eliminando blocos de código comentados e variáveis não utilizadas na função de validação de formulário" 🧹 cleanup: Eliminando blocos de código comentados e variáveis não utilizadas na função de validação de formulário
git commit -m ":wastebasket: remove: Removendo arquivos não utilizados do projeto para manter a organização e atualização contínua" 🗑️ remove: Removendo arquivos não utilizados do projeto para manter a organização e atualização contínua

Conclusão

Padronizar mensagens de commit pode parecer um detalhe pequeno, mas faz toda a diferença na organização e manutenção de um projeto. Usando Conventional Commits (com ou sem emojis), o histórico do repositório se torna mais claro, facilitando revisões e colaboração em equipe.

Se você ainda não segue um padrão, experimente adotar essa prática e veja como ela pode melhorar seu fluxo de trabalho!

💖 Obrigado por ler, escrevi este artigo no intuito de ajudar os Devs e também registrar mais um dos meus aprendizados.
Sinta-se à vontade para interagir e comentar.