Commits Semânticos: Organizando o Caos com Padrões de Mensagens

Ruan Victor Dev - Oct 16 - - Dev Community

E aí, dev! Beleza? Você já ouviu falar sobre versionamento de código e commits semânticos? Não? 😱 Então já deve ter reparado que o histórico de commits em seus projetos está um pouquinho bagunçado e sem um padrão lógico.

Você já deve ter notado algo como:

  • "Subindo alterações";
  • "Corrigindo bugs";
  • "Voltando para a versão funcional";
  • "Atualização...";
  • "Ajustes...";
  • "Testando...";

Tá, Ruan, mas eu consigo entender tranquilamente quais foram as modificações desses commits em meu projeto, então qual é o problema nisso?

Bom, certo, você pode até conseguir compreender os motivos dessas alterações hoje, mas no futuro, com o avanço do projeto, estamos sujeitos a esquecer disso, e pela ausência de detalhes nas mensagens de commit, é fácil não entendermos a finalidade real dessas alterações e ficarmos perdidos com tantas versões sem significado 😵. O problema de commits não semânticos é ainda mais grave quando trabalhamos em equipe, visto que, se cada um tiver o seu próprio padrão, isso impactará diretamente na comunicação da equipe de desenvolvimento no decorrer do projeto...

Por isso estamos aqui hoje! 🚀 Para aprender alguns padrões conhecidos e como escrever boas mensagens de commit. Está pronto?

Oque são Commits Semânticos?

Ok, mas oque de fato são 'commits semânticos'? 🤔
Commits semânticos são simplesmente mensagens de commit que seguem um padrão específico para que, ao olhar para o histórico, você consiga entender claramente o que foi feito no projeto. Ou seja, eles têm um significado claro e preciso, facilitando a comunicação do que realmente aconteceu naquele commit.

Por exemplo, ao invés de usar algo vago como "Ajustes", você usaria uma mensagem semântica como:

  • "corrigindo erro no formulário de login";
  • "adicionando validação no formulário de registro";

Com commits semânticos, cada mensagem de commit é como uma mini descrição do que foi feito, de forma clara e organizada. Isso facilita a vida não só para você no futuro, mas também para qualquer pessoa que estiver contribuindo no projeto.

Padrões de Commits Semânticos: Como Escrever e Quando Usar?

Após entender o que são commits semânticos, é importante que você conheça alguns tipos comuns muito utilizados em projetos pelas comunidades de desenvolvedores.

Os tipos de commits facilitam e dão ainda mais significado para a mensagem assim como um rótulo de um produto no mercado 🏷, eles adicionam uma "identidade" para cada mensagem.

Abaixo, uma listagem com os principais tipos:

  • ✨ feat: Adição de nova funcionalidade.
  • 🐛 fix: Correção de bugs.
  • 🛠️ chore: Tarefas de manutenção que não afetam a lógica do código (como atualizações de dependências).
  • ♻️ refactor: Refatoração de código sem adicionar novas funcionalidades ou corrigir bugs.
  • ⚡ perf: Melhorias de desempenho.
  • 📚 docs: Alterações na documentação.
  • 🧪 test: Adição ou modificação de testes.

Estes tipos de commits darão ainda mais significado para suas alterações. Vale lembrar que o uso de emojis pode melhorar a visualização, mas não são obrigatórios.

Veja o exemplo em um repositório real:

Imagem exemplo de commits semânticos em um projeto real.

Estruturando uma Mensagem de Commit Clara

Sabe aquela sensação de abrir o histórico de commits e não entender nada? 😅 Para evitar isso, uma boa estrutura de mensagem de commit é essencial! Veja a seguir uma estrutura para descrever melhor os seus commits:

1. Título (Curto e direto ao ponto)

O título é a primeira coisa que todos vão ler. Por isso, ele precisa ser curto e objetivo. Geralmente, segue esse formato:

< tipo >(escopo opcional): breve descrição da mudança

  • Tipo: Define a natureza da mudança. Exemplo: feat, fix, docs, refactor.
  • Escopo (opcional): Qual parte do projeto foi alterada. Exemplo: auth, api, header.
  • Breve descrição: Explicação rápida e direta sobre o que mudou.

Exemplo:

✨ feat(api): adicionar suporte à autenticação com OAuth

2. Corpo (Aqui vem o contexto)

O corpo da mensagem é onde você explica em mais detalhes o que foi feito e por quê. É uma oportunidade de documentar o raciocínio por trás da mudança, além de deixar claro o impacto no sistema. Inclua:

  • Motivo da mudança: Por que essa alteração foi necessária?
  • O que foi feito: Explicação mais detalhada sobre a modificação.
  • Detalhes adicionais: Alguma observação importante, impacto ou dependência.

Exemplo de corpo:

✨ feat(api): adicionar suporte à autenticação com OAuth
Adicionei a funcionalidade de autenticação via OAuth utilizando a biblioteca passport.js. Essa feature permite aos usuários fazer login com contas de terceiros, como Google e Facebook. A configuração foi feita tanto no backend quanto no frontend, e os testes foram concluídos com sucesso.

Essa estrutura facilita a leitura e entendimento do histórico de commits para todos os desenvolvedores no projeto, além de manter um padrão claro e organizado. 🚀

Conclusão

Recapitulando, os commits semânticos são uma maneira eficiente de manter o histórico de alterações do projeto organizado e facilmente compreensível por toda a equipe. Seguindo a estrutura de Título, Corpo e Escopo, garantimos que cada modificação tenha um propósito claro e possa ser rapidamente identificada no futuro.

Adotar esse padrão não só melhora a comunicação dentro de um time de desenvolvimento, mas também facilita o entendimento para futuros colaboradores e revisões. Além disso, manter um histórico consistente é um grande aliado para quem trabalha com CI/CD (Integração Contínua/Entrega Contínua), já que facilita a automação de processos e o rastreamento de bugs.

Portanto, usar commits semânticos não é apenas uma questão de organização, mas de boas práticas que impactam diretamente a qualidade e eficiência do projeto. Então, que tal começar a aplicar essas técnicas nos seus próximos commits? 😎

Lembre-se: Um bom commit é a chave para um projeto bem organizado!

Conheça Mais Sobre Git e Github

Quer aprender mais sobre? Reuni alguns materiais interessantes:

Minhas Redes Sociais

Instagram, Linkedin, Github

. .
Terabox Video Player