[Git] Como escrever boas mensagens de commit do Git
Padrões de commits 📜
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, o que facilita a criação de ferramentas automatizadas.
Esses commits auxiliarão você e sua equipe a entenderem de forma facilitada quais alterações foram realizadas no trecho de código que foi commitado.
Essa identificação ocorre por meio de uma palavra e emoji que identifica se aquele commit realizado se trata de uma alteração de código, atualização de pacotes, documentação, alteração de visual, teste...
Tipo e descrição 🦄
O commit semântico possui os elementos estruturais abaixo (tipos), que informam a intenção do seu commit ao utilizador(a) de seu código.
-
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ções 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) -
ci
- Commits do tipo ci indicam mudanças relacionadas a integração contÃnua (continuous integration). -
raw
- Commits to tipo raw indicam mudanças relacionadas a arquivos de configurações, dados, features, parametros.
Recomendações 🎉
- Adicione um tipo consistente com o tÃtulo do conteúdo.
- Recomendamos que na primeira linha deve ter no máximo 4 palavras.
- Para descrever com detalhes, usar a descrição do commit.
- Usar um emoji no inÃcio da mensagem de commit representando sobre o commit.
- Os links precisam ser adicionados em sua forma mais autêntica, ou seja: sem encurtadores de link e links afiliados.
Complementos de commits 💻
- Rodapé: informação sobre o revisor e número do card no Trello ou Jira. Exemplo: Reviewed-by: Elisandro Mello Refs #133
- Corpo: descrições mais precisas do que está contido no commit, apresentando impactos e os motivos pelos quais foram empregadas as alterações no código, como também instruções essenciais para intervenções futuras. Exemplo: see the issue for details on typos fixed.
- Descrições: uma descrição sucinta da mudança. Exemplo: correct minor typos in code
Padrões de emojis 💈
💻 Exemplos
A parte de emoji acho desnecessária. Já que uma mensagem clara e objetiva já resolve.
Complementando, seguem outros posts sobre o assunto:
- https://www.tabnews.com.br/AllanCapistrano/escrever-commits-melhores
- https://www.tabnews.com.br/thiagomariotto/commitlint-commitzen-e-husky-padronizando-os-commits-de-seus-repositorios
- https://www.tabnews.com.br/devroot/padroes-de-emojis
- https://www.tabnews.com.br/andersonlimadev/dicas-domine-o-jogo-dos-commits-commits-convencionais-aliases-git-para-uma-historia-impecavel-no-seu-repositorio
Dito isso, não gosto dessa ideia de colocar emojis, acho que gera ruÃdo e mais atrapalha do que ajuda (e sem querer parecer grosseiro, mas sinceramente acho uma grande bobagem). Sem contar que muitos são redundantes, pois a palavra-chave já seria mais que suficiente.
De qualquer forma, acho importante a ideia de ter mensagens descritivas, detalhadas e padronizadas, na medida do possÃvel. Só não encare essa - e qualquer outra metodologia - como uma lei imutável escrita na pedra. Eu vejo mais como recomendações, que podem ser adaptadas para cada contexto.
Como eu tinha MUITA preguiça de escrever tudo isso, há muito tempo atrás fiz um comando em python para otimizar meu processo interno. Não é uma lib finalizada, mas o commit ela faz que é uma beleza: https://github.com/caiquearaujo/gitpy.
Eu utilizo muito uma variação do GitFlow nos meus projetos, então existem outros comandos por lá (não finalizados, recomendo apenas para experimentação). Para mim é produtivo ser um comando guiado, mas quem quiser fazer um fork e personalizar...
Achei bacana a informação. Vou começar a ter mais zelo com as mensagens de commit daqui pra frente.
dicas muito boas, mas perder tempo procurando código de emoji pra colocar na mensagem de commit é sacanagem kkkk
Muito bom, tenho MUITA dificuldade com isso, a ferramenta do Copilot do VS me salvou, tenho vários commit's com "update" :(
Esse é o tipo de artigo que você guarda nos favoritos do navegador para acessar no dia a dia.