---
# System prepended metadata

title: Development Guidelines - Commiting
tags: [Development-Guidelines]

---

---
title: Development Guidelines - Commiting
tags: Development-Guidelines
---

## Commiting

Os commits na base de código dos projetos devem seguir um padrão.


* Devem ser escritos em *inglês*.
* Seguir o formato
* Utilizar https://gitmoji.dev/
    * https://github.com/frinyvonnick/gitmoji-changelog/


### Formato de commit

Um *commit* é formado por um indicador de ***tipo de commit*** (que pode ser representado na forma de um ***gitmoji***) seguido do ***resumo***. O ***corpo*** pode ser escrito numa nova linha, caso mais detalhes precisem ser informados. 

```
<tipo> <resumo>
  │       │
  │       └─⫸ Resumo no tempo presente. Não capitalizado. Sem ponto final..
  │
  └─⫸ Tipo de commit: 🚀 build |👷 ci |📝 docs| ✨feat |
                       🐛 fix | ⚡️ perf | ♻️ refactor | ✅ test
```

#### Resumo

Use o resumo para passar uma descrição suscinta das alterações:

* Use o tempo presente imperativo: ***"implement"***, nada de *"implemented"*, *"implementing"*, *"implementation of"* ou *"implements"*. 
    > Tente completar a frase: "If applied **this commit will** __________________________"
* Não inicie com letra maiúscula.
* Sem ponto final.

#### Tipos de commit

* **build**: Mudanças que afetam o *build system* (ex: yarn, npm, webpack, node, java, gradle, ...)
* **ci**: Mudanças em nossos arquivos e scripts de configuração de CI (ex: Gitlab CI, Github Actions, ...)
* **docs**: Mudanças exclusivas de documentação
* **feat**: Uma nova funcionalidade
* **fix**: Uma correção de bug
* **perf**: A code change that improves performance
* **refactor**: Uma mudança de código que não corrige nenhum bug nem adiciona nenhum recurso
* **test**: Adicionar testes ausentes ou corrigir testes existentes

É possível ser mais específico utilizando as seguintes representações em **gitmoji**:


| Emoji | Use when... |
|-|-|
|🎨 | Improve structure / format of the code |
|⚡️ | Improve performance |
|🔥 | Remove code or files |
|🐛 | Fix a bug |
|🚑 | Critical hotfix |
|✨ | Introduce new features |
|📝 | Add or update documentation |
|🚀 | Deploy stuff |
|💄 | Add or update the UI and style files |
|🎉 | Begin a project |
|🔒 | Fix security issues |
|🔖 | Release / Version tags |
|🚨 | Fix compiler / linter warnings / code styling |
|🚧| Work in progress |
|💚 | Fix CI Build |
|⬇️ | Downgrade dependencies |
|⬆️ | Upgrade dependencies |
|📌 | Pin dependencies to specific versions |
|👷 | Add or update CI build system |
|📈 | Add or update analytics or track code |
|♻️ | Refactor code |
|➕| Add a dependency |
|➖ | Remove a dependency |
|🔧 | Add or update configuration files |
|🔨 | Add or update development scripts |
|🌐 | Internationalization and localization |
|✏️ | Fix typos |
|💩 | Write bad code that needs to be improved |
|⏪ | Revert changes |
|🔀 | Merge branches |
|📦 | Add or update compiled files or packages |
|👽 | Update code due to external API changes |
|🚚 | Move or rename resources (e.g.: files, paths, routes) |
|📄 | Add or update license |
|💥 | Introduce breaking changes |
|🍱 | Add or update assets |
|♿️| Improve accessibility |
|💡 | Add or update comments in source code |
|🍻 | Write code drunkenly |
|💬 | Add or update text and literals |
|🗃 | Perform database related changes |
|🔊 | Add or update logs |
|🔇 | Remove logs |
|👥 | Add or update contributor(s) |
|🚸 | Improve user experience / usability |
|🏗 | Make architectural changes |
|📱 | Work on responsive design |
|🤡 | Add or update an easter egg |
|🥚 | Introduce breaking changes |
|🙈 | Add or update a .gitignore file |
|📸| Add or update snapshots |
|⚗ | Perform experiments |
|🔍 | Improve SEO |
|🌱 | Add or update types |
|🗃 | Add or update seed files |
|🚩 | Add, update, or remove feature flags |
|🥅 | Catch errors |
|💫 | Add or update animations and transitions |
|🗑 | Deprecate code that needs to be cleaned up |
|🛂 | Work on code related to authorization, roles and permissions |
|🩹 | Simple fix for a non-critical issue |
| 🧐 | Data exploration / inspection |