# git-commit plugin

The git-commit plugin adds several [git aliases](https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-alias) for [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/#summary) messages.

To use it, add `git-commit` to the plugins array in your zshrc file:

```zsh
plugins=(... git-commit)
```

## Syntax

```zsh
git <type> [(-s, --scope) "<scope>"] "<message>"
git <type> [(-a, --attention)] "<message>"
git <type> [(-s, --scope) "<scope>"] [(-a, --attention)] "<message>"
git <type> [(-sa, -as)] "<scope>" "<message>" "<message>"
```

> ⚠️ Single/Double quotes around the scope and message are required

Where `type` is one of the following:

- `build`
- `chore`
- `ci`
- `docs`
- `feat`
- `fix`
- `perf`
- `refactor`
- `rev`
- `style`
- `test`
- `wip`

> NOTE: the alias for `revert` type is `rev`, as otherwise it conflicts with the git command of the same name.
> It will still generate a commit message in the format `revert: <message>`

## Examples

| Git alias                                     | Command                                              |
| --------------------------------------------- | ---------------------------------------------------- |
| `git style "remove trailing whitespace"`      | `git commit -m "style: remove trailing whitespace"`  |
| `git wip -a "work in progress"`               | `git commit -m "wip!: work in progress"`             |
| `git fix -s "router" "correct redirect link"` | `git commit -m "fix(router): correct redirect link"` |
| `git rev -a -s "api" "rollback v2"`           | `git commit -m "revert(api)!: rollback v2"`          |

## Conventional Commits List

| Type     | Name                     | Description                                                                                            |
| -------- | ------------------------ | ------------------------------------------------------------------------------------------------------ |
| build    | Builds                   | Change that affect the build system or external dependencies (exemple scopes: composer and/or npm)     |
| chore    | Chores                   | Other changes that don't modify src or test files                                                      |
| ci       | Continuous Integrations  | Changes to our CI configuration files and scripts                                                      |
| docs     | Documantation            | Documentation onyl changes                                                                             |
| feat     | Features                 | A new feature                                                                                          |
| fix      | Bug Fixes                | A bug fix                                                                                              |
| perf     | Performance Improvements | A code change that improves performance                                                                |
| refactor | Code Refactoring         | A code change tha neither fixes a bug nor adds a feature                                               |
| rev      | Reverts                  | Reverts a previous commit                                                                              |
| style    | Styles                   | Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) |
| test     | Tests                    | Adding missing tests or correcting existing tests                                                      |

## Extras

| Type  | Name             | Description                                                                       |
| ----- | ---------------- | --------------------------------------------------------------------------------- |
| wip   | Work In Progress | Denote commits that are still in progress and not ready for integration or review |
