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.cleanup
- Commits do tipo cleanup são utilizados para remover código comentado, trechos desnecessários ou qualquer outra forma de limpeza do código-fonte, visando aprimorar sua legibilidade e manutenibilidade.remove
- Commits do tipo remove indicam a 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.
- 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 💈
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 |
Commit Emoji | Colon Syntax | Description |
---|---|---|
🎨 | :art: | Improving structure or format of code |
⚡ | :zap: | Improving performance |
🔥 | :fire: | Removing code or files |
🐛 | :bug: | Fixing a bug |
🚑 | :ambulance: | Critical hotfix |
✨ | :sparkles: | Introducing a new feature |
📝 | :memo: | Writing documentation |
🚀 | :rocket: | Deploying code |
💄 | :lipstick: | Updating the UI or style files |
🎉 | :tada: | Initial commit |
✅ | :white_check_mark: | Adding tests |
🔒 | :lock: | Fixing security issues |
🍎 | :apple: | Fixing something with macOS |
🐧 | :penguin: | Fixing something with Linux |
🏁 | :checkered_flag: | Fixing something with Windows |
🍏 | :green_apple: | Fixing something with iOS |
🔖 | :bookmark: | Releasing / Versioning tags |
🚨 | :rotating_light: | Removing linter warnings |
🚧 | :construction: | Work in progress |
💚 | :green_heart: | Fixing CI build |
⬇ | :arrow_down: | Downgrading dependencies |
⬆ | :arrow_up: | Upgrading dependencies |
📌 | :pushpin: | Pinning dependencies to specific versions |
👷 | :construction_worker: | Add CI build system |
📈 | :chart_with_upward_trend: | Adding analytics or code tracking |
♻ | :recycle: | Refactoring code |
🐳 | :whale: | Work about Docker |
➕ | :heavy_plus_sign: | Adding a dependency |
➖ | :heavy_minus_sign: | Removing a dependency |
🔧 | :wrench: | Changing configuration files |
🌐 | :globe_with_meridians: | Internationalization and localization |
✏ | :pencil2: | Fixing typos |
💩 | :hankey: | Writing bad code that needs to be improved |
⏪ | :rewind: | Reverting changes |
🔀 | :twisted_rightwards_arrows: | Merging branches |
📦 | :package: | Updating compiled files or packages |
👽 | :alien: | Updating code due to external changes |
🚚 | :truck: | Moving or renaming files |
📄 | :page_facing_up: | Adding or updating license |
💥 | :boom: | Introducing breaking changes |
🍱 | :bento: | Adding or updating assets |
👌 | :ok_hand: | Updating code due to code review changes |
♿ | :wheelchair: | Improving accessibility |
💡 | :bulb: | Documenting source code |
🍻 | :beers: | WCD - Writing code drunkenly |
💬 | :speech_balloon: | Updating text and literals |
🗃 | :card_file_box: | Performing database related changes |
🔊 | :loud_sound: | Adding logs |
🔇 | :mute: | Removing logs |
👥 | :bust_in_silhouette: | Adding contributors |
🚸 | :children_crossing: | Improving user experience / usability |
🏗 | :building_construction: | Making architectural changes |
📱 | :iphone: | Working on responsive design |
🤡 | :clown_face: | Mocking things |
🥚 | :egg: | Adding an easter egg |
🙈 | :see_no_evil: | Adding or updating a .gitignore file |
📸 | :camera_flash: | Adding or updating snapshots |
⚗ | :alembic: | Experimenting with new things |
🔍 | :mag: | Improving SEO |
☸ | :wheel_of_dharma: | Work about Kubernetes |
🏷 | :label: | Adding or updating types (Flow, Typescript) |
💻 Exemplos
Comando Git | Resultado no GitHub |
---|---|
git commit -m ":tada: Commit inicial" | 🎉 Commit inicial |
git commit -m ":books: docs: Atualização do README" | 📚 docs: Atualização do README |
git commit -m ":bug: fix: Loop infinito na linha 50" | 🐛 fix: Loop infinito na linha 50 |
git commit -m ":sparkles: feat: Página de login" | ✨ feat: Página de login |
git commit -m ":bricks: ci: Modificação no Dockerfile" | 🧱 ci: Modificação no Dockerfile |
git commit -m ":recycle: refactor: Passando para arrow functions" | ♻️ refactor: Passando para arrow functions |
git commit -m ":zap: perf: Melhoria no tempo de resposta" | ⚡ perf: Melhoria no tempo de resposta |
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: Criando novo teste" | 🧪 test: Criando novo teste |
git commit -m ":bulb: docs: Comentários sobre a função LoremIpsum( )" | 💡 docs: Comentários sobre a função LoremIpsum( ) |
git commit -m ":card_file_box: raw: RAW Data do ano aaaa" | 🗃️ raw: RAW Data do ano aaaa |
git commit -m ":broom: cleanup: Eliminando blocos de código comentados e variáveis não utilizadas na função de validação de formulário" | 🧹 cleanup: Eliminando blocos de código comentados e variáveis não utilizadas na função de validação de formulário |
git commit -m ":wastebasket: remove: Removendo arquivos não utilizados do projeto para manter a organização e atualização contínua" | 🗑️ remove: Removendo arquivos não utilizados do projeto para manter a organização e atualização contínua |
Contribuição ✨
Ajude a comunidade tornando este projeto ainda mais incrível. Leia como contribuir clicando aqui e a licença. Estou convencido de que juntos alcançaremos coisas incríveis!
Aprenda desenvolvimento frontend ❤️
Este repositório é um projeto gratuito para a comunidade de desenvolvedores, mas você pode me ajudar comprando o meu ebook "eFront - Estudando frontend do zero" se estiver interessado em aprender ou melhorar suas habilidades de desenvolvimento frontend. A sua compra me ajuda a produzir e fornecer mais conteúdo gratuito para a comunidade. Adquira agora e comece sua jornada no desenvolvimento frontend.