git-cz
Version:
Semantic emojified git commit, git-cz.
258 lines (198 loc) • 4.93 kB
Markdown
[](http://commitizen.github.io/cz-cli/)
# git-cz

### Without installation
```shell
npx git-cz
# or
npx git-cz -e
```
### Install globally standalone
```shell
npm install -g git-cz
git-cz
# or
git-cz -e
```
### Install locally with Commitizen
```shell
npm install -g commitizen
npm install --save-dev git-cz
```
`package.json`:
```json
{
"config": {
"commitizen": {
"path": "git-cz"
}
},
}
```
run:
```shell
git cz
```
### Install globally with Commitizen
```shell
npm install -g commitizen git-cz
commitizen init git-cz --save-dev --save-exact
```
run:
```shell
git cz
```
## Custom config
You can provide a custom configuration in a `changelog.config.js` file in your repo, or in any parent folder.
git-cz will search for the closest config file.
Below is default config:
```js
module.exports = {
"disableEmoji": false,
"list": [
"test",
"feat",
"fix",
"chore",
"docs",
"refactor",
"style",
"ci",
"perf"
],
"maxMessageLength": 64,
"minMessageLength": 3,
"questions": [
"type",
"scope",
"subject",
"body",
"breaking",
"issues",
"lerna"
],
"scopes": [],
"types": {
"chore": {
"description": "Build process or auxiliary tool changes",
"emoji": "🤖",
"value": "chore"
},
"ci": {
"description": "CI related changes",
"emoji": "🎡",
"value": "ci"
},
"docs": {
"description": "Documentation only changes",
"emoji": "✏️",
"value": "docs"
},
"feat": {
"description": "A new feature",
"emoji": "🎸",
"value": "feat"
},
"fix": {
"description": "A bug fix",
"emoji": "🐛",
"value": "fix"
},
"perf": {
"description": "A code change that improves performance",
"emoji": "⚡️",
"value": "perf"
},
"refactor": {
"description": "A code change that neither fixes a bug or adds a feature",
"emoji": "💡",
"value": "refactor"
},
"release": {
"description": "Create a release commit",
"emoji": "🏹",
"value": "release"
},
"style": {
"description": "Markup, white-space, formatting, missing semi-colons...",
"emoji": "💄",
"value": "style"
},
"test": {
"description": "Adding missing tests",
"emoji": "💍",
"value": "test"
}
}
};
```
## Non-interactive mode
Using `--non-interactive` flag you can run `git-cz` non-interactive mode.
For example:
```
git-cz --non-interactive --type=feat --subject="add onClick prop to component"
```
CLI parameters:
- `--type`
- `--subject`
- `--scope`
- `--body`
- `--breaking`
- `--issues`
- `--lerna`
## Disable Emoji
Using `--disable-emoji` flag will disable emoji.
For example:
```
git-cz --disable-emoji
```
## Commit message format
* A commit message consists of a **header**, **body** and **footer**.
* The header has a **type** and a **subject**:
```
<type>[(<scope>)]: <emoji> <subject>
[BLANK LINE]
[body]
[BLANK LINE]
[breaking changes]
[BLANK LINE]
[footer]
```
The **header** is the only mandatory part of the commit message.
The first line (type + subject) is limited to 50 characters **[enforced]**
Any other line should be limited to 72 character **[automatic wrapping]**
This allows the message to be easier to read on GitHub as well as in various git tools.
### Type
Must be one of the following:
- `test` — Adding missing tests
- `feat` — A new feature
- `fix` — A bug fix
- `chore` — Build process or auxiliary tool changes
- `docs` — Documentation only changes
- `refactor` — A code change that neither fixes a bug or adds a feature
- `style` — Markup, white-space, formatting, missing semi-colons...
- `ci` — CI related changes
- `perf` — A code change that improves performance
### Subject
The subject contains succinct description of the change:
* Use the imperative, present tense: "change" not "changed" nor "changes"
* No dot (.) at the end.
### Body
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
The body should include the motivation for the change and contrast this with previous behavior.
#### Affects [only on [lerna](https://lernajs.io/) environments]
Select the packages the commit affected.
### Breaking Changes
**Breaking Changes** must start with the words `BREAKING CHANGE: `.
### Footer
The footer is the place to reference any tasks related to this commit.
## Why this Fork?
```
npm i -g git-cz
added 1 package in 0.612s
```
Installs in 0.6s vs 31.1s.
```
npm i -g mol-conventional-changelog
added 345 packages in 31.076s
```