Study Notes

Git

Conventional Commits

É um pattern para mensagens de commits.

!type(?scope): !subject     // ! att obrigatório
<?body>                     // ? att não obrigatório
<?footer>

Subject

Escrever no imperativo. Pode parecer meio não intuitivo (porque o commit é algo que você já fez) mas na verdade deve-se pensar: "se eu aceitar esse commit, oque ele vai fazer quando aplicado".

Type

Qual a categoria de alteração/iteração está sendo feita.

  • test: indica qualquer tipo de criação ou alteração de códigos de teste.
  • feat: incluindo um novo recurso
  • refactor: refatorações que não alterem sua funcionalidade
  • style: alterações referentes a formatações de código, semicolons, trailing spaces, lint...
  • fix: solucionando um problema
  • chore: mudanças no projeto que não afetem o sistema ou arquivos de testes. São mudanças de desenvolvimento. (Exemplo: Mudar regras do eslint, adicionar prettier, adicionar mais extensões de arquivos ao .gitignore)
  • docs: mudanças na documentação do projeto.
  • build: modificações em arquivos de build e dependências.
  • perf: alterações de código que estejam relacionadas a performance.
  • ci: mudanças relacionadas a integração contínua
  • revert: reversão de um commit anterior.

Scope

Mesmo o scope não sendo obrigatório, ele pode ser utilizado para contextualizar o commit e trazer menos responsabilidade para a subject, uma vez que dispondo do tipo de commit e o contexto que foi aplicado, a mensagem deve ser o mais breve e concisa possível. Além disso, no caso do scope é possível adicionarmos múltiplos valores, como por exemplo: Caso houvesse uma refatoração de código em um repositório com versões mobile, web e desktop. A qual afeta o contexto mobile e web, poderíamos escrever o commit da seguinte maneira:

git commit -m "refactor(web/mobile): change createUser() logs

Observação: Os escopos devem ser separados com / , \ ou ,.

Body

  • Explain what and why, not how
  • Wrap at 72 characters
  • BREAKING CHANGE: <description>
  • Closes #<issue>, Fixes #<issue>, Refs #<issue>

Referências

On this page