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:
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:
- Capítulo de Livro - "Git e Github: Desenvolvendo Habilidades Essenciais para Controle de Versões e Colaboração";
- Usando Git Direito - Fabio Akita;
- Como padronizar commits? - Mario Souto;