Conhecidos como "Commits semânticos", a especificação do Conventional Commits é uma convenção simples para utilizar nas mensagens de commit. Ela define um conjunto de regras para criar um histórico de commit explícito, o que facilita a criação de ferramentas automatizadas baseadas na especificação.
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, entre outras opções.
O commit semântico possui os elementos estruturais abaixo (tipos), que informam a intenção do seu commit no contexto do seu código.
Tipo | Contexto | Meu pitaco |
---|---|---|
feat |
Código está incluindo um novo recurso. | a maioria vai aqui |
fix |
Código está solucionando um problema (bug fix). | infelizmente sempre vai ter alguns aqui |
docs |
Mudanças na documentação, como por exemplo no Readme do seu repositório. (Não inclui alterações em código). | |
test |
Alterações em testes, seja criando, alterando ou excluindo testes unitários. (Não inclui alterações em código) | Mas teste unitário não é código? |
build |
Modificações em arquivos de build e dependências. | |
perf |
Identificar quaisquer alterações de código que estejam relacionadas a performance. | para os que tem que tirar leite de pedra |
style |
Alterações referentes a formatações de código, semicolons, trailing spaces, lint... (Não inclui alterações em código). | portanto só serve para os que tem TOC |
refactor |
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 (tem outro tipo para isso, mas nesse caso veio como uma tarefa secundária). | grande fonte de problemas, já que a refatoração quase sempre arrasta algo que não deveria ter sido alterado |
chore |
Indicam atualizações de tarefas de build, configurações de administrador e pacotes; como por exemplo adicionar um pacote no gitignore. (Não inclui alterações em código) | |
ci |
Mudanças relacionadas a integração contínua (continuous integration). | |
raw |
Arquivos de configurações, dados, parâmetros. | |
cleanup |
Utilizados para remover código comentado, trechos desnecessários ou qualquer outra forma de limpeza do código-fonte, visando aprimorar sua legibilidade e manutenção futura. | há controvérsias |
remove |
Exclusão de arquivos, diretórios ou funcionalidades obsoletas ou não utilizadas, reduzindo o tamanho e a complexidade do projeto e mantendo-o mais organizado. |
- Adicione um tipo consistente com o título do conteúdo;
- Seja sucinto, preferencialmente a primeira linha deve ter 4 palavras [eu nunca consegui cumprir essa regra];
- Para maiores detalhes, utilize a descrição do commit;
- Chame a atenção usando um emoji no início da mensagem de commit representando a ação do mesmo;
- Ao adicionar links, faça na sua forma mais autêntica, ou seja, sem encurtadores de link e links afiliados.
-
Título: uma descrição sucinta da mudança (ou o título da tarefa que veio da ferramenta de gestão). Exemplo: Isolando configuração do mapper
-
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: Configuração do mapper foi isolada em método estático para que fosse reutilizado em testes unitários.
-
Rodapé: [opcional] informação sobre o revisor e número do card no Trello ou Jira. Exemplo: Revisado por: Caio M Refs #9313
♻️ REFACTOR: Isolando configuração do mapper
Configuração do mapper foi isolada em método estático para que fosse reutilizado em testes unitários.
Revisado por: Caio M
Refs #9313
- Criação automatizada de CHANGELOGs.
- Comunicar a natureza das mudanças para colegas de equipe, o público e outras partes interessadas.
- Disparar processos de build e deploy (aqui depende de configurações adicionais).
- Facilitar a contribuição de outras pessoas em seus projetos, permitindo que eles explorem um histórico de commits melhor estruturado.
Tipo do commit | Emoji | Palavra-chave |
---|---|---|
Acessibilidade | ♿ :wheelchair: |
|
Adicionando um teste | ✅ :white_check_mark: |
test |
Atualizando a versão de um submódulo | ⬆️ :arrow_up: |
|
Retrocedendo a versão de um submódulo | ⬇️ :arrow_down: |
|
Adicionando uma dependência | ➕ :heavy_plus_sign: |
build |
Alterações de revisão de código | 👌 :ok_hand: |
style |
Animações e transições | 💫 :dizzy: |
|
Bugfix | 🐛 :bug: |
fix |
Comentários | 💡 :bulb: |
docs |
Commit inicial | 🎉 :tada: |
init |
Configuração | 🔧 :wrench: |
chore |
Deploy | 🚀 :rocket: |
|
Documentação | 📚 :books: |
docs |
Em progresso | 🚧 :construction: |
|
Estilização de interface | 💄 :lipstick: |
feat |
Infraestrutura | 🧱 :bricks: |
ci |
Lista de ideias (tasks) | 🔜 :soon: |
|
Mover/Renomear | 🚚 :truck: |
chore |
Novo recurso | ✨ :sparkles: |
feat |
Package.json em JS | 📦 :package: |
build |
Performance | ⚡ :zap: |
perf |
Refatoração | ♻️ :recycle: |
refactor |
Limpeza de Código | 🧹 :broom: |
cleanup |
Removendo um arquivo | 🗑️ :wastebasket: |
remove |
Removendo uma dependência | ➖ :heavy_minus_sign: |
build |
Responsividade | 📱 :iphone: |
|
Revertendo mudanças | 💥 :boom: |
fix |
Segurança | 🔒️ :lock: |
|
SEO | 🔍️ :mag: |
|
Tag de versão | 🔖 :bookmark: |
|
Teste de aprovação | ✔️ :heavy_check_mark: |
test |
Testes | 🧪 :test_tube: |
test |
Texto | 📝 :pencil: |
|
Tipagem | 🏷️ :label: |
|
Tratamento de erros | 🥅 :goal_net: |
|
Dados | 🗃️ :card_file_box: |
raw |
Comando Git | Resultado no GitHub |
---|---|
git commit -m ":tada: Commit inicial"
|
🎉 Commit inicial |
git commit -m ":books: docs: Atualização de README"
|
📚 docs: Atualização de README |
git commit -m ":bug: fix: Não aplicar permissão default"
|
🐛 fix: Não aplicar permissão default |
git commit -m ":sparkles: feat: POST/users"
|
✨ feat: POST/users |
git commit -m ":bricks: ci: Variáveis de ambiente no Dockerfile"
|
🧱 ci: Variáveis de ambiente no Dockerfile |
git commit -m ":recycle: refactor: Ajuste da role para permissão vazia"
|
♻️ refactor: Ajuste da role para permissão vazia |
git commit -m ":zap: perf: Otimização da geração do mapa de jornada"
|
⚡ perf: Otimização da geração do mapa de jornada |
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: Teste para validação de área"
|
🧪 test: Teste para validação de área |
git commit -m ":bulb: docs: Comentários no swagger"
|
💡 docs: Comentários no swagger |
git commit -m ":card_file_box: raw: Token do ambiente de homologação"
|
🗃️ raw: Token do ambiente de homologação |
git commit -m ":broom: cleanup: Eliminando variáveis não utilizadas"
|
🧹 cleanup: Eliminando variáveis não utilizadas |
git commit -m ":wastebasket: remove: Removendo arquivos desnecessários do projeto"
|
🗑️ remove: Removendo arquivos desnecessários do projeto |
git commit -m ":package: build: Package.json em JS"
|
📦 build: Package.json em JS |
git commit -m ":heavy_plus_sign: build: Adicionando dependência para DLL"
|
➕ build: Adicionando dependência para DLL |
git commit -m ":heavy_minus_sign: build: Atualizar caminho e nome do arquivo"
|
➖ build: Removendo dependência nuget |
git commit -m ":ok_hand: style: Revisão de código"
|
👌 style: Revisão de código |
git commit -m ":lipstick: feat: Atualização tema de interface"
|
💄 feat: Atualização tema de interface |
git commit -m ":truck: chore: Atualizar caminho e nome do arquivo"
|
🚚 chore: Atualizar caminho e nome do arquivo |