Check commit message formatting, branch naming, committer name, email, and more. Alternative to Yet Another Commit Checker.
- requiring commit message to match regex
- requiring branch naming to match regex
- requiring committer name and email to match regex
- customizing error message
- customizing suggest command
commit-check is a tool designed for teams.
Its main purpose is to standardize the format of commit message, branch naming, etc, and makes it possible to:
- writing descriptive commit is easy to read
- identify branch according to the branch type
- triggering the specific types of commit/branch CI build
- automatically generate changelogs
Create a config file .commit-check.yml
under your repository root directory, e.g. .commit-check.yml
- If you did't set
.commit-check.yml
,commit-check
will use the default configuration. - i.e. the commit message will follow the rules of conventional commits, branch naming follow bitbucket branching model.
There are a variety of ways you can use commit-check as follows.
Please see commit-check/commit-check-action
Tip
Make sure pre-commit
is installed.
- repo: https://github.com/commit-check/commit-check
rev: the tag or revision
hooks: # support hooks
- id: check-message
- id: check-branch
- id: check-author-name
- id: check-author-email
Global installation
sudo pip3 install -U commit-check
User installation
pip install -U commit-check
Install from git repo
pip install git+https://github.com/commit-check/commit-check.git@main
Then you can run commit-check
command line. More about commit-check --help
please see docs.
To configure the hook, you need to create a new script file in the .git/hooks/
directory of your Git repository.
Here is an example script that you can use to set up the hook:
#!/bin/sh
commit-check --message --branch --author-name --author-email
Save the script file to pre-push
and make it executable by running the following command:
chmod +x .git/hooks/pre-push
Then when you run git push
command, this push hook will be run automatically.
Check commit message failed
Commit rejected by Commit-Check.
(c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c)
/ ._. \ / ._. \ / ._. \ / ._. \ / ._. \
__\( C )/__ __\( H )/__ __\( E )/__ __\( C )/__ __\( K )/__
(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
|| E || || R || || R || || O || || R ||
_.' '-' '._ _.' '-' '._ _.' '-' '._ _.' '-' '._ _.' '-' '._
(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)
`-´ `-´ `-´ `-´ `-´ `-´ `-´ `-´ `-´ `-´
Invalid commit message => test
It doesn't match regex: ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-\.]+\))?(!)?: ([\w ])+([\s\S]*)
The commit message should be structured as follows:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
More details please refer to https://www.conventionalcommits.org
Suggest: please check your commit message whether matches above regex
Check branch naming failed
Commit rejected by Commit-Check.
(c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c)
/ ._. \ / ._. \ / ._. \ / ._. \ / ._. \
__\( C )/__ __\( H )/__ __\( E )/__ __\( C )/__ __\( K )/__
(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
|| E || || R || || R || || O || || R ||
_.' '-' '._ _.' '-' '._ _.' '-' '._ _.' '-' '._ _.' '-' '._
(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)
`-´ `-´ `-´ `-´ `-´ `-´ `-´ `-´ `-´ `-´
Commit rejected.
Invalid branch name => test
It doesn't match regex: ^(bugfix|feature|release|hotfix|task)\/.+|(master)|(main)|(HEAD)|(PR-.+)
Branches must begin with these types: bugfix/ feature/ release/ hotfix/ task/
Suggest: run command `git checkout -b type/branch_name`
You can add a badge to your repository to show your contributors / users that you use commit-check!
Markdown
[](https://github.com/commit-check/commit-check)
reStructuredText
.. image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git&logoColor=white
:target: https://github.com/commit-check/commit-check
:alt: commit-check
Versioning follows Semantic Versioning.
To provide feedback (requesting a feature or reporting a bug) please post to issues.
This project is released under the MIT License