> For the complete documentation index, see [llms.txt](https://tokenomy.gitbook.io/boilerplate-code/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tokenomy.gitbook.io/boilerplate-code/version-control/git/commit.md).

# Commit

A commit includes a snapshot of the files at that moment, along with a unique identifier called a commit hash. It also contains a commit message that describes the changes made.

Commit conventions allow to add more semantic meaning to your git history. We use `@commitlint` to make sure our commits always follow the pattern:

`[reference] type: description`

`type`: is the context of the commit. One of the following:

* `feat`: A commit contains new a new feature or a complete story.
* `fix`: A commit contains a bug fix.
* `hotfix`: A commit contains a fix for a critial issue that needs to be resolved immediately. Normally, it will be merged to `main` then released to production as soon as it has been made.
* `release`: A commit is for marking a release tag. eg: `release: v1.0.0`.
* `style`: A commit contains an update to adjust the current UI.
* `refactor`: A commit contains a [refactor](https://www.agilealliance.org/glossary/refactoring) for the existing code.
* `perf`: A commit contains an enhancement to boost performance of an app or build process in general.
* `test`: A commit contains a change in relation to testing stuff.
* `chore`: A commit contains a change in the code base to enable your peers to work more efficient.
* `ci`: A commit contains a change or update for DevOps stuff.
* `reference`: jira ticket ID reference. In the project, it should be `[PROJECT-ID]`.

Example of a valid commit:

```
[TKN-1235] fix: wrong validation on password form
[TKN-1234] feat: implement profile page
```
