- Notifications
You must be signed in to change notification settings - Fork111
Semantic Git commits
streamich/git-cz
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
npx git-cz# ornpx git-cz -e
npm install -g git-czgit-cz# orgit-cz -e
npm install -g commitizennpm install --save-dev git-cz
package.json
:
{"config": {"commitizen": {"path":"git-cz" } }}
run:
git cz
npm install -g commitizen git-czcommitizen init git-cz --save-dev --save-exact
run:
git cz
You can provide a custom configuration in achangelog.config.js
file in your repo, or in any parent folder.git-cz will search for the closest config file.Below is default config:
module.exports={disableEmoji:false,format:'{type}{scope}: {emoji}{subject}',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'},messages:{type:'Select the type of change that you\'re committing:',customScope:'Select the scope this component affects:',subject:'Write a short, imperative mood description of the change:\n',body:'Provide a longer description of the change:\n ',breaking:'List any breaking changes:\n',footer:'Issues this commit closes, e.g #123:',confirmCommit:'The packages that this commit has affected\n',},}};
Using--non-interactive
flag you can rungit-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
Using--disable-emoji
flag will disable emoji.
For example:
git-cz --disable-emoji
- A commit message consists of aheader,body andfooter.
- The header has atype and asubject:
<type>[(<scope>)]:<emoji><subject>[BLANK LINE][body][BLANK LINE][breaking changes][BLANK LINE][footer]
Theheader 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.
By default the subject format is:{type}{scope}: {subject}
Configuring theformat
field in.git-cz.json
you can customize your own:
{type}{scope}: {emoji}{subject}
{emoji}{scope} {subject}
Must be one of the following:
test
— Adding missing testsfeat
— A new featurefix
— A bug fixchore
— Build process or auxiliary tool changesdocs
— Documentation only changesrefactor
— A code change that neither fixes a bug or adds a featurestyle
— Markup, white-space, formatting, missing semi-colons...ci
— CI related changesperf
— A code change that improves performance
The subject contains succinct description of the change:
- Use the imperative, present tense: "change" not "changed" nor "changes"
- No dot (.) at the end.
Just as in thesubject, 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 onlerna environments]
Select the packages the commit affected.
Breaking Changes must start with the wordsBREAKING CHANGE:
.
The footer is the place to reference any tasks related to this commit.
npm i -g git-czadded 1 packagein 0.612s
Installs in 0.6s vs 31.1s.
npm i -g mol-conventional-changelogadded 345 packagesin 31.076s