Better pre-commit, re-engineered in Rust
prek [OPTIONS] [HOOK|PROJECT]... [COMMAND]
prek installInstall the prek git hook
prek install-hooksCreate hook environments for all hooks used in the config file
prek runRun hooks
prek listList available hooks
prek uninstallUninstall the prek git hook
prek validate-configValidate
.pre-commit-config.yamlfilesprek validate-manifestValidate
.pre-commit-hooks.yamlfilesprek sample-configProduce a sample
.pre-commit-config.yamlfileprek auto-updateAuto-update pre-commit config to the latest repos' versions
prek cacheManage the prek cache
prek init-template-dirInstall hook script in a directory intended for use with
git config init.templateDirprek try-repoTry the pre-commit hooks in the current repo
prek selfprekself management
Install the prek git hook
prek install [OPTIONS] [HOOK|PROJECT]...
- HOOK|PROJECT
Include the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Run all hooks with the specified ID across all projects -
project-path/: Run all hooks from the specified project -
project-path:hook-id: Run only the specified hook from the specified project
Can be specified multiple times to select multiple hooks/projects.
-
--allow-missing-configAllow a missing
pre-commitconfiguration file--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--hook-type,-thook-type--install-hooksCreate hook environments for all hooks used in the config file
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--overwrite,-fOverwrite existing hooks
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--skiphook|projectSkip the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Skip all hooks with the specified ID across all projects -
project-path/: Skip all hooks from the specified project -
project-path:hook-id: Skip only the specified hook from the specified project
Can be specified multiple times. Also accepts
PREK_SKIPorSKIPenvironment variables (comma-delimited).-
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Create hook environments for all hooks used in the config file.
This command does not install the git hook. To install the git hook along with the hook environments in one command, use prek install --install-hooks.
prek install-hooks [OPTIONS] [HOOK|PROJECT]...
- HOOK|PROJECT
Include the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Run all hooks with the specified ID across all projects -
project-path/: Run all hooks from the specified project -
project-path:hook-id: Run only the specified hook from the specified project
Can be specified multiple times to select multiple hooks/projects.
-
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--skiphook|projectSkip the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Skip all hooks with the specified ID across all projects -
project-path/: Skip all hooks from the specified project -
project-path:hook-id: Skip only the specified hook from the specified project
Can be specified multiple times. Also accepts
PREK_SKIPorSKIPenvironment variables (comma-delimited).-
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Run hooks
prek run [OPTIONS] [HOOK|PROJECT]...
- HOOK|PROJECT
Include the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Run all hooks with the specified ID across all projects -
project-path/: Run all hooks from the specified project -
project-path:hook-id: Run only the specified hook from the specified project
Can be specified multiple times to select multiple hooks/projects.
-
--all-files,-aRun on all files in the repo
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--directory,-ddirRun hooks on all files in the specified directories.
You can specify multiple directories. It can be used in conjunction with
--files.--dry-runDo not run the hooks, but print the hooks that would have been run
--fail-fastStop running hooks after the first failure
--filesfilesSpecific filenames to run hooks on
--from-ref,--source,-sfrom-refThe original ref in a
<from_ref>...<to_ref>diff expression. Files changed in this diff will be run through the hooks--help,-hDisplay the concise help for this command
--hook-stagehook-stageThe stage during which the hook is fired
[default: pre-commit]
Possible values:
manualcommit-msgpost-checkoutpost-commitpost-mergepost-rewritepre-commitpre-merge-commitpre-pushpre-rebaseprepare-commit-msg
--last-commitRun hooks against the last commit. Equivalent to
--from-ref HEAD~1 --to-ref HEAD--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--show-diff-on-failureWhen hooks fail, run
git diffdirectly afterward--skiphook|projectSkip the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Skip all hooks with the specified ID across all projects -
project-path/: Skip all hooks from the specified project -
project-path:hook-id: Skip only the specified hook from the specified project
Can be specified multiple times. Also accepts
PREK_SKIPorSKIPenvironment variables (comma-delimited).-
--to-ref,--origin,-oto-refThe destination ref in a
from_ref...to_refdiff expression. Defaults toHEADiffrom_refis specified--verbose,-vUse verbose output
--version,-VDisplay the prek version
List available hooks
prek list [OPTIONS] [HOOK|PROJECT]...
- HOOK|PROJECT
Include the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Run all hooks with the specified ID across all projects -
project-path/: Run all hooks from the specified project -
project-path:hook-id: Run only the specified hook from the specified project
Can be specified multiple times to select multiple hooks/projects.
-
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--hook-stagehook-stageShow only hooks that has the specified stage
Possible values:
manualcommit-msgpost-checkoutpost-commitpost-mergepost-rewritepre-commitpre-merge-commitpre-pushpre-rebaseprepare-commit-msg
--languagelanguageShow only hooks that are implemented in the specified language
Possible values:
condacoursierdartdockerdocker-imagedotnetfailgolanghaskellluanodeperlpythonrrubyrustswiftpygrepscriptsystem
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--output-formatoutput-formatThe output format
[default: text]
Possible values:
textjson
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--skiphook|projectSkip the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Skip all hooks with the specified ID across all projects -
project-path/: Skip all hooks from the specified project -
project-path:hook-id: Skip only the specified hook from the specified project
Can be specified multiple times. Also accepts
PREK_SKIPorSKIPenvironment variables (comma-delimited).-
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Uninstall the prek git hook
prek uninstall [OPTIONS]
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--hook-type,-thook-type--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Validate .pre-commit-config.yaml files
prek validate-config [OPTIONS] [CONFIG]...
- CONFIG
The path to the configuration file
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Validate .pre-commit-hooks.yaml files
prek validate-manifest [OPTIONS] [MANIFEST]...
- MANIFEST
The path to the manifest file
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Produce a sample .pre-commit-config.yaml file
prek sample-config [OPTIONS]
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--file,-ffileWrite the sample config to a file (
.pre-commit-config.yamlby default)--help,-hDisplay the concise help for this command
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Auto-update pre-commit config to the latest repos' versions
prek auto-update [OPTIONS]
--bleeding-edgeUpdate to the bleeding edge of the default branch instead of the latest tagged version
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--dry-runDo not write changes to the config file, only display what would be changed
--freezeStore "frozen" hashes in
revinstead of tag names--help,-hDisplay the concise help for this command
--jobs,-jjobsNumber of threads to use
[default: 0]
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--reporepoOnly update this repository. This option may be specified multiple times
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Manage the prek cache
prek cache [OPTIONS] <COMMAND>
prek cache dirShow the location of the prek cache
prek cache gcRemove unused cached repositories, hook environments, and other data
prek cache cleanRemove all prek cached data
prek cache sizeShow the size of the prek cache
Show the location of the prek cache
prek cache dir [OPTIONS]
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Remove unused cached repositories, hook environments, and other data
prek cache gc [OPTIONS]
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Remove all prek cached data
prek cache clean [OPTIONS]
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Show the size of the prek cache
prek cache size [OPTIONS]
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--human,--human-readable,-HDisplay the cache size in human-readable format (e.g.,
1.2 GiBinstead of raw bytes)--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Install hook script in a directory intended for use with git config init.templateDir
prek init-template-dir [OPTIONS] <DIRECTORY>
- DIRECTORY
The directory in which to write the hook script
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--hook-type,-thook-typeWhich hook type to install
Possible values:
commit-msgpost-checkoutpost-commitpost-mergepost-rewritepre-commitpre-merge-commitpre-pushpre-rebaseprepare-commit-msg
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-allow-missing-configAssume cloned repos should have a
pre-commitconfig--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--verbose,-vUse verbose output
--version,-VDisplay the prek version
Try the pre-commit hooks in the current repo
prek try-repo [OPTIONS] <REPO> [HOOK|PROJECT]...
- REPO
Repository to source hooks from
- HOOK|PROJECT
Include the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Run all hooks with the specified ID across all projects -
project-path/: Run all hooks from the specified project -
project-path:hook-id: Run only the specified hook from the specified project
Can be specified multiple times to select multiple hooks/projects.
-
--all-files,-aRun on all files in the repo
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--directory,-ddirRun hooks on all files in the specified directories.
You can specify multiple directories. It can be used in conjunction with
--files.--dry-runDo not run the hooks, but print the hooks that would have been run
--fail-fastStop running hooks after the first failure
--filesfilesSpecific filenames to run hooks on
--from-ref,--source,-sfrom-refThe original ref in a
<from_ref>...<to_ref>diff expression. Files changed in this diff will be run through the hooks--help,-hDisplay the concise help for this command
--hook-stagehook-stageThe stage during which the hook is fired
[default: pre-commit]
Possible values:
manualcommit-msgpost-checkoutpost-commitpost-mergepost-rewritepre-commitpre-merge-commitpre-pushpre-rebaseprepare-commit-msg
--last-commitRun hooks against the last commit. Equivalent to
--from-ref HEAD~1 --to-ref HEAD--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--rev,--refrevManually select a rev to run against, otherwise the
HEADrevision will be used--show-diff-on-failureWhen hooks fail, run
git diffdirectly afterward--skiphook|projectSkip the specified hooks or projects.
Supports flexible selector syntax:
-
hook-id: Skip all hooks with the specified ID across all projects -
project-path/: Skip all hooks from the specified project -
project-path:hook-id: Skip only the specified hook from the specified project
Can be specified multiple times. Also accepts
PREK_SKIPorSKIPenvironment variables (comma-delimited).-
--to-ref,--origin,-oto-refThe destination ref in a
from_ref...to_refdiff expression. Defaults toHEADiffrom_refis specified--verbose,-vUse verbose output
--version,-VDisplay the prek version
prek self management
prek self [OPTIONS] <COMMAND>
prek self updateUpdate prek
Update prek
prek self update [OPTIONS] [TARGET_VERSION]
- TARGET_VERSION
Update to the specified version. If not provided, prek will update to the latest version
--cd,-CdirChange to directory before running
--colorcolorWhether to use color in output
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config,-cconfigPath to alternate config file
--help,-hDisplay the concise help for this command
--log-filelog-fileWrite trace logs to the specified file. If not specified, trace logs will be written to
$PREK_HOME/prek.log--no-progressHide all progress outputs.
For example, spinners or progress bars.
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which prek will write no output to stdout.--refreshRefresh all cached data
--tokentokenA GitHub token for authentication. A token is not required but can be used to reduce the chance of encountering rate limits
May also be set with the
GITHUB_TOKENenvironment variable.--verbose,-vUse verbose output
--version,-VDisplay the prek version