GitWit is a lightweight CLI tool designed to help developers craft better commit messages following semantic conventions. It provides interactive assistance (wizards), linting, and changelog generation, ensuring consistent, meaningful, and standardized commit history across projects.
Writing clear, consistent, and structured commit messages can be challenging, especially in teams or open-source projects. GitWit addresses this by enforcing a configurable set of rules, guiding users either through an interactive wizard or automatic validation, reducing noise and improving project traceability.
GitWit is designed to work within projects that are version-controlled using Git. You can use it in local repositories to:
- Create commits interactively using semantic commit conventions;
- Validate commit messages (linting);
- Generate changelogs based on commit history.
You can get the packages directly from the Releases page in the GitHub repository.
In the attachments for each release, you'll find:
- Linux: .deb and .rpm packages (e.g., gitwit_1.0.0-RC2.deb, gitwit_1.0.0-RC2.rpm)
- Windows: .exe installer (e.g., gitwit_1.0.0-RC2.exe)
Choose the package corresponding to your system and follow the standard installation process for your platform.
You can now run commands like:
gitwit -h # Show help
gitwit install # Install GitWit alias in current repository
gitwit commit # Start interactive commit wizard
gitwit lint # Lint latest commit
gitwit changelog # Generate changelog for current branch
Clone the project and build it locally:
git clone https://github.com/rafandoo/gitwit.git
cd gitwit
./gradlew clean runnableJar
In the build/libs
directory, you will find the gitwit-<version>-aio.jar
file, this is the "all in one" file that contains all the dependencies needed to run GitWit.
You can run it using:
java -jar build/libs/gitwit-<version>-aio.jar -h
✔️ Interactive commit wizard – Step-by-step prompt for type, scope, short & long descriptions.
✔️ Commit linting – Validate commits individually or in ranges.
✔️ Changelog generation – Group commits by type and scope.
✔️ Custom YAML configuration – Define allowed types, scopes, and validation rules.
✔️ Multilingual support – Supports English and Portuguese messages.
✔️ Git hook friendly – Can be wired into Git lifecycle manually.
✔️ Emoji support for commit types.
✔️ Windows and Linux native installers.
✔️ Plugin support for custom lint rules.
✔️ Contribution metrics and insights.
✔️ Support for commit signing.
This project is licensed under the Apache License 2.0
Copyright ©️ 2025-present - Rafael Camargo