Clean Git History
A Git history linter to ensure it stays clean for those who prefer a linear history without merge commits.
Usage
Clean Git History checks the commits from the current HEAD(inclusively) till a provided Git reference(exclusively).
This reference can be a branch, commit or tag, just provide it as the final argument.
e.g.
Examples
GitHub Actions
name: Git History
on: pull_request
jobs:
clean:
name: Clean
runs-on: ubuntu-latest
container:
image: ghcr.io/developerc286/clean_git_history:v1.1.3
steps:
- name: Checkout code.
uses: actions/checkout@v5
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Check clean Git history.
run: clean_git_history "origin/${{ github.base_ref }}"
GitLab CI
clean-git-history-checking:
stage: clean-git-history-checking
image: ghcr.io/developerc286/clean_git_history:v1.1.3
script:
- clean_git_history "origin/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}"
rules:
- if: $CI_MERGE_REQUEST_ID
Installation
Binary
Statically linked compiled binaries are available for download. Visit the releases page at https://github.com/DeveloperC286/clean_git_history/releases to see all the releases, the release notes contains links to binary downloads for various architectures.
version="v1.1.3" && |
Cargo
Cargo is the Rust package manager, the install sub-command pulls from crates.io and then compiles the binary locally, placing the compiled binary at ${HOME}/.cargo/bin/clean_git_history.
By default it installs the latest version at the time of execution.
You can specify a specific version to install using the --version argument.
For certain environments such as CICD etc you may want to pin the version.
e.g.
See https://doc.rust-lang.org/cargo/commands/cargo-install.html#install-options for more detailed documentation.
Docker
You can use the Docker image published to ghcr.io/developerc286/clean_git_history.
Issues/Feature Requests
Report issues or request features on our GitHub Issues.