Skip to content

caiomeletti/commit-pattern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Commit Pattern ou Padrões de confirmação 📜

GitHub visitors

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.

Tipo e descrição 💬

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.

Recomendações ☑️

  • 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.

Complementos de commits 💻

  • 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

Por que utilizar Commits semânticos? 🤷‍♀️🤷‍♂️

  • 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.

Padrões de emojis 💈

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

Exemplos 🎬

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published