Pedoman ini di adopsi dari AngularJS Commit Convention.

Pesan commit harus mengikuti struktur seperti ini:

## Default
<pre>
<b><a href="#type-yang-dizinkan">&lt;type&gt;</a></b></font>(<b><a href="#scope-atau-cakupan">&lt;optional scope&gt;</a></b>): <b><a href="#description">&lt;description&gt;</a></b>
<sub>empty separator line</sub>
<b><a href="#body">&lt;optional body&gt;</a></b>
<sub>empty separator line</sub>
<b><a href="#footer">&lt;optional footer&gt;</a></b>
</pre>


### `<type>` yang dizinkan

- **build**: Perubahan yang memengaruhi sistem build atau dependensi eksternal (contoh cakupan (scope): gulp, broccoli, npm)
- **ci**: Perubahan pada file konfigurasi dan skrip CI kami (contoh cakupan: Circle, BrowserStack, SauceLabs)
- **docs**: perubahan Dokumentasi
- **feat**: Fitur baru
- **fix**: Perbaikan bug
- **perf**: Perubahan kode yang meningkatkan kinerja
- **refactor**: Perubahan kode yang tidak memperbaiki bug atau menambahkan fitur
- **style**: Perubahan yang tidak memengaruhi makna kode (white-space, pemformatan, tidak ada titik koma, etc)
- **test**: Menambahkan tes yang hilang atau mengoreksi tes yang ada
- **chore**: Perubahan lainnya, seperti `.gitignore`


### `<scope>` atau Cakupan

Ini biasanya berisikan tentang fitur-fitur yang `terpengaruh`.
- Ini adalah bagian `optional`


### `<description>`

Uraian singkat mengenai perubahan yang di commit.
- Berisikan bagian yang paling penting, walaupun memiliki beberapa perubahan pada kode.
- Tidak memerlukan tanda titik (.) di akhir

### `<body>`

Bagian ini berisikan uraian tentang, "mengapa ada perubahan yang dilakukan dan apa bedanya dengan yang sebelumnya"
- Ini adalah bagian `optional`


### `<footer>`

Bagian ini berisikan uraian tentang, referensi `issues` yang berkaitan dengan commit ini.
- Ini adalah bagian `optional`


## Contoh

Berikut ini adalah contoh commit yang biasa sesuai dengan format:

Contoh commit untuk `Initial Commit`
```
chore: init
```

Ini adalah contoh lainnya saat melakukan perubahan untuk fitur-fitur
```
feat: add email notifications on new direct messages
```

```
feat(shopping cart): add the amazing button
```

```
feat!: remove ticket list endpoint

refers to JIRA-1337

BREAKING CHANGES: ticket enpoints no longer supports list all entites.
```

```
fix(api): handle empty message in request body
```

```
fix(api): fix wrong calculation of request body checksum
```

```
fix: add missing parameter to service call

The error occurred because of <reasons>.
```

```
perf: decrease memory footprint for determine uniqe visitors by using HyperLogLog
```

```
build: update dependencies
```

```
build(release): bump version to 1.0.0
```

```
refactor: implement fibonacci number calculation as recursion
```

```
style: remove empty line
```


### Referensi

- [angular/CONTRIBUTING.md](https://github.com/angular/angular/blob/main/CONTRIBUTING.md)
- [qoomon/conventional-commits-cheatsheet.md](https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13)
- [conventionalcommits.org v1.0.0](https://www.conventionalcommits.org/id/v1.0.0/)